sql >> データベース >  >> RDS >> Mysql

mysqlで名前文字列を分割する方法は?

    私はこの答えを2つの方法に分けました。最初のメソッドは、フルネームフィールドを名、ミドルネーム、およびラストネームに分割します。ミドルネームがない場合、ミドルネームはNULLとして表示されます。

    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
    

    この2番目の方法では、ミドルネームを姓の一部と見なします。フルネームフィールドからは、名と姓の列のみが選択されます。

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

    substr、locate、substring_indexなどでできるクールなことがたくさんあります。実際の混乱については、マニュアルを確認してください。 http://dev.mysql.com/doc/refman /5.0/en/string-functions.html



    1. 致命的なエラー:未定義の関数sqlsrv_connect()の呼び出し

    2. 壁を壊せ!データのサイロ化を解除する方法

    3. OrderBy句を使用したMySQLでの並べ替え

    4. SEC_TO_TIME()の例– MySQL