示例: 将 sys_org_person表中的fd_bazuzhi字段按'|'分隔, 并输出为多条记录
当前的数据格式
SELECT t.fd_bazuzhi FROM sys_org_person t WHERE t.fd_id = '17b726c61fe39058a991e2146f394c34';
查询结果
大英考研运营巴|大英考研运营巴|大英数字与教学部巴|大英考研运营巴|大英考研运营巴|公共支出巴|****教育教学教研巴|****教育教学教研巴
分隔实例
SELECT
substring_index(
substring_index(t.fd_bazuzhi, '|', a.rownum),
'|' ,- 1
) AS fd_bazuzhi
FROM
sys_org_person t,
(
SELECT
@rownum :=@rownum + 1 AS rownum
FROM
sys_org_person m,
(SELECT @rownum := 0) n
) a
WHERE
t.fd_id = '17b726c61fe39058a991e2146f394c34'
AND a.rownum <= (
length(t.fd_bazuzhi) - length(
REPLACE (t.fd_bazuzhi, '|', '')
) + 1
);
查询结果
sql解释:
SELECT
@rownum :=@rownum + 1 AS rownum
FROM
sys_org_person m,
(SELECT @rownum := 0) n
这段sql是为取连续的数字, sys_org_person可用任意记录数大于要拆分的字符串分隔数的表替代, 若业务表中本就有自增的字段也可直接使用该字段替换rownum
substring_index和replace方法百度有详细解释, 不再赘述