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

MySQL-最初の3つのコンマ区切り値を取得します

    SUBSTRING_INDEX を使用できます 2回、-1個のパラメーターを持つ2番目のパラメーター:

    SELECT
      'aaaaa, bbbbb, ccccc',
      SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 1) AS column_one,
      SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2), ',', -1) AS column_two,
      SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 3), ',', -1) AS column_three
    

    パラメーターが負の場合、最後の区切り文字の右側(右から数えて)のすべてが返されます。例

    • SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2) aaaaa, bbbbbを返します
    • SUBSTRING_INDEX( aaaaa、bbbbb , ',', -1) その後、bbbbbを返します

    '、'を区切り文字として使用するか、 TRIM 結果。

    フィドルこちら をご覧ください。 。

    編集

    値が3つ未満の文字列を検討する場合は、次のように使用できます。

    SELECT
      s,
      SUBSTRING_INDEX(s, ',', 1) AS column_one,
      CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>0
           THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 2), ',', -1)
           ELSE NULL END AS column_two,
      CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>1
           THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 3), ',', -1)
           ELSE NULL END AS column_three
    FROM
      strings
    

    フィドルこちら をご覧ください。 。




    1. Dockerでmysql_upgradeを実行していますか?

    2. MariaDBでのREGEXP_REPLACE()のしくみ

    3. mysqlデータベースをOracleに変換します

    4. レガシーデータベースを処理するときに、欠落している行でHibernateがチョークする