如何從 MySQL 逗號分隔的字段中提取單獨值?

如何從 MySQL 逗號分隔的字段中提取單獨值?

如何從 mysql 中逗號分隔的字段中提取單獨值

您有一張包含字段值以逗號分隔的表。例如,該字段可能包含值為“1,2,3,4,5,6”這樣的數據。您希望將每個值提取為一個獨立的記錄。

解決方案:使用 substring_index() 函數

要實現此目的,您可以使用 mysql 內置函數 substring_index()。此函數使用以下語法:

substring_index(str,delim,count)

其中:

  • str 是要處理的字符串
  • delim 是分隔符。
  • count 指定要提取的子字符串的序號。

通過將逗號作為分隔符并為計數指定適當的值,您可以逐個提取逗號分隔的值。

例如,要提取“1,2,3,4,5,6”中的前三個值,可以使用以下查詢:

select substring_index('1,2,3,4,5,6', ',', 1) as val union all select substring_index(substring_index('1,2,3,4,5,6', ',', 2), ',', -1) union all select substring_index(substring_index('1,2,3,4,5,6', ',', 3), ',', -1)

這將返回以下輸出:

+------+ | val  | +------+ | 1    | | 2    | | 3    | +------+

您可以根據需要添加更多 union all 語句來提取更多值。

實際示例

mysql> SELECT SUBSTRING_INDEX('1,2,3,4,5,6', ',', 1) AS val     -> UNION ALL SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5,6', ',', 2), ',', -1)     -> UNION ALL SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5,6', ',', 3), ',', -1)     -> ; +------+ | val  | +------+ | 1    | | 2    | | 3    | +------+ 3 rows in set (0.00 sec)  mysql>

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享