1. ホーム
  2. mysql

[解決済み] デリミタを使ったMySQLの部分文字列抽出

2022-03-07 16:03:10

質問

MySQLで文字列から部分文字列を抽出したいのですが、どうすればよいですか?文字列はカンマ(',')で区切られた複数の部分文字列を含んでいます。これらの部分文字列を、任意のMySQL関数を使用して抽出する必要があります。

例えば

Table Name: Product
-----------------------------------
item_code  name    colors
-----------------------------------
102        ball     red,yellow,green
104        balloon  yellow,orange,red  

色フィールドを選択し、赤、黄、緑の3つの文字列を カンマ .

解決方法は?

重複している可能性があります。 1つのフィールドから2つのフィールドに値を分割する

残念ながら、MySQL には文字列の分割機能はありません。 上のリンクにあるように ユーザー定義分割関数 .

データを取得するためのより冗長なバージョンは、以下のようにすることができます。

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', 1), ',', -1) as colorfirst,
       SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', 2), ',', -1) as colorsecond
....
       SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n), ',', -1) as colornth
  FROM product;