如何从 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 分享