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

レコードのコンマ区切り文字列を分割し、MySQLで順番に配置するにはどうすればよいですか?

    MySQL SUBSTRING_INDEX()を使用できます。指定された区切り文字の出現回数の前に、指定されたコンマ区切りの文字列からサブ文字列を返します。

    これを試してみてください、うまくいくようです:

    SELECT ID
           ,SUBSTRING_INDEX(SUBSTRING_INDEX(t.AgentID, ',', n.n), ',', -1) Agent
           ,Name
           ,SUBSTRING_INDEX(SUBSTRING_INDEX(t.Return_Date, ',', n.n), ',', -1) Return_Date
    FROM table1 t CROSS JOIN 
     (
       SELECT a.N + b.N * 10 + 1 n
       FROM 
         (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
        ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
       ORDER BY n
      ) n
    
    WHERE n.n <= 1 + (LENGTH(t.Return_Date) - LENGTH(REPLACE(t.Return_Date, ',', '')))
    ORDER BY ID;
    

    これを確認してください。SQLフィドルはこちら

    詳細については、MySQL分割文字列関数を参照してください。



    1. LaravelScoutとAlgoliaを使用した多言語インデックス

    2. DBD::mysqlの使用におけるperlエラーのヘルプが必要

    3. MySQLテーブルを変更して、列にコメントを追加します

    4. JSON文字列でのMYSQLREGEXP検索