如何将MySQL字段中的逗号分隔值转换为多行?

如何将mysql字段中的逗号分隔值转换为多行?

分离逗号分隔字段的值

假设您有一个mysql字段包含一个以逗号分隔的值列表,例如“1,2,3,4,5,6”。要分别提取这些值,请遵循以下步骤:

使用 substring_index() 函数

mysql提供了 substring_index() 函数,它可以将字符串中的子字符串提取到指定的分隔符。

将逗号分隔的值转换为多行

使用 substring_index() 将逗号分隔的值拆分为多行,分隔字符为逗号。

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>

以上就是如何将MySQL字段中的逗号分隔值转换为多行?的详细内容,更多请关注其它相关文章!