sql >> Databáze >  >> RDS >> Mysql

Jak rozdělit řetězec názvu v mysql?

Tuto odpověď jsem rozdělil do dvou (2) metod. První metoda rozdělí vaše pole celého jména na jméno, prostřední a příjmení. Druhé jméno se zobrazí jako NULL, pokud žádné druhé jméno není.

SELECT
   SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name,
   If(  length(fullname) - length(replace(fullname, ' ', ''))>1,  
       SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2), ' ', -1) ,NULL) 
           as middle_name,
   SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 3), ' ', -1) AS last_name
FROM registeredusers

Tato druhá metoda považuje druhé jméno za součást příjmení. Z pole vašeho celého jména vybereme pouze sloupec křestní jméno a příjmení.

SELECT
   SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name,
    TRIM( SUBSTR(fullname, LOCATE(' ', fullname)) ) AS last_name
FROM registeredusers

Existuje spousta skvělých věcí, které můžete dělat pomocí substr, locate, substring_index, atd. Podívejte se do manuálu, zda není nějaký skutečný zmatek. http://dev.mysql.com/doc/refman /5.0/cs/string-functions.html



  1. MySQL odstraní duplicitní záznamy, ale ponechá nejnovější

  2. Uložená procedura, která exportuje data do souborů csv, exportuje pouze do jednoho souboru

  3. Generování stromu založeného na hloubce z hierarchických dat v MySQL (žádné CTE)

  4. Jak vybrat řádky, které mají časové razítko aktuálního dne?