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

MySQLで文字列を分割する方法

    問題:

    MySQLで文字列を分割したい。

    例:

    私たちのデータベースには、Student id列にデータがあります およびname

    id 名前
    1 アンスミス
    2 マークトウェイン
    3 ブラッドグリーン

    列名からデータを取得して、firstnameに分割してみましょう。 およびlastname

    解決策:

    SUBSTRING_INDEX()を使用します 働き。クエリは次のとおりです:

    SELECT
    SUBSTRING_INDEX(name,' ',1) AS firstname,
    SUBSTRING_INDEX(name,' ',-1) AS lastname
    FROM Student
    

    クエリの結果は次のとおりです。

    アン スミス
    マーク トウェイン
    ブラッド

    ディスカッション:

    関数SUBSTRING_INDEX() ソース文字列、区切り文字、および区切り文字の出現回数の3つの引数を取ります。

    ソース文字列 分割したい文字列です。

    区切り文字 SUBSTRING_INDEX()が使用する文字列です。 関数はソース文字列を検索します。見つかった場合、それは部分文字列が終了する場所を示します。区切り文字は、スペースなどの単一の文字にすることができますが、2つ以上の文字で構成されるパターンにすることもできます。このパターンでは大文字と小文字が区別されます。つまり、指定された文字が大文字であるか小文字であるかが重要です。区切り文字は文字列であるため、引用符(‘’)で記述する必要があることに注意してください。

    最後の引数は発生回数です 。区切り文字パターンを一致させる必要がある回数を示します。発生回数は負の値になる可能性があることに注意してください。負の場合は、区切り文字の出現回数を右から数えます。カウントが正の数の場合、左からカウントします。

    この関数は、区切り文字が出現回数で指定された回数と一致するまで、ソース文字列のすべての文字を出力します。

    次のクエリを実行した場合:

    SELECT
    SUBSTRING_INDEX('Ann Smith',' ',1);
    

    出力は次のようになります:

    Ann
    

    ご覧のとおり、関数は左から最初のスペースが見つかるまですべての文字を返しました。

    この例では、左から最初のスペースまでのすべての文字を生徒の名前として取得し、右から最初のスペースまでのすべての文字を生徒の名前として取得します。


    1. AccessはODBCデータソースとどのように通信しますか?パート2

    2. データブロックのダンプ

    3. MySQL JOIN ON vs USING?

    4. Oracletools.jarを再配布できますか?