tidb是否有分割字符串为多行的函数?

image
如图数据,能把fc490ca45c00b1249bbe3554a4fdf6fb,f033ab37c30201f73f142449d037028d 根据逗号解析为两条数据

CREATE TABLE USER (NAME VARCHAR(200));

INSERT INTO USER(NAME) VALUES(‘张三,李四,王五’);

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(a.name,‘,’,b.help_topic_id+1),‘,’,-1) AS NAME
FROM USER a,(SELECT 0 help_topic_id UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) b
WHERE b.help_topic_id < (LENGTH(a.name)-LENGTH(REPLACE(a.name,‘,’,‘’))+1);

楼上可行,不过一直搞不懂为啥要数据库取做这个事情

我也觉得,数据库要想尽办法最快的把行或列取出来,接下来的加工操作应该让程序在内存里面做。

是啊,我是很反对,使用数据库函数的,数据库资源本来就有限,程序资源现在相当便宜,k8s后,资源利用率很高了,扩容也方便,搞不懂为何喜欢在数据库做sum \ split 时间计算等

数据库计算对应开发端可以减少逻辑啊

建议程序处理这种逻辑

这个需要提前知道里边到底有几个吧?

一个人管理多个校区的场景存了这样的数据,现在要统计每个学校有多少人,就有了这个需求

统计分析场景,需要解析下到数据中心去

你说的这种场景程序也能做到统计

不是啊,你用来帮助切割的表理论上可以造无限行数的表,行数大于等于你所有的逗号的数量即可

明白了,我用find_inset处理了