sql >> Database >  >> RDS >> Mysql

ontleden resultaten in MySQL via REGEX

MySQL heeft geen ingebouwde functionaliteit om te doen waar je om vraagt. Het zou mogelijk zijn door enkele nieuwe functies te definiëren, maar het is waarschijnlijk gemakkelijker om het gewoon te doen in de programmeertaal waarmee u de database benadert.

Voor zoiets eenvoudigs als een e-mailadres zou je echter helemaal geen reguliere expressies moeten gebruiken, je kunt de SUBSTRING_INDEX() functie , als:

SELECT
    SUBSTRING_INDEX(email, '@', 1) AS Username,
    SUBSTRING_INDEX(SUBSTR(email, LOCATE('@', email)), '.', 1) AS Domain,
    SUBSTRING_INDEX(email, '.', -1) AS TLD
FROM users;

In woorden, dat is:

  • Gebruikersnaam =alles voor de eerste '@'
  • Domein =alles tussen de eerste '@' en de eerste '.'
  • TLD =alles na de laatste '.'


  1. Een SQL IN-component parametriseren

  2. Verhoog de prestaties met Bulk Collect in Oracle

  3. Afbeeldingen toewijzen aan structuurweergaveknooppunten

  4. Twee kolommen als primaire sleutels in mysql?