从逗号分隔字段提取多个值
如何在 mysql 中从存储为逗号分隔值(例如“1,2,3,4,5,6”)的字段中分别提取这些值?
解决方案
可以使用 mysql 内置函数 substring_index() 将逗号分隔的值转换为多行,具体步骤如下:
- 将逗号分隔的值作为第一个参数传递给 substring_index() 函数。
- 将逗号作为第二个参数传递,表示分隔符。
- 将 1 作为第三个参数,指示要提取第一个值。
例如,以下查询将从逗号分隔的字段中提取前三个值:
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 | +------+
登录后复制