SELECT
replace(
SUBSTRING_INDEX(SUBSTRING_INDEX(field_name, ';', nm.n), ';', -1)
,'\n','') value
FROM
table_name
CROSS JOIN
(SELECT 1 n UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) nm
WHERE
n <= 1 + (LENGTH(field_name) - LENGTH(REPLACE(field_name, ';', '')))
and length(SUBSTRING_INDEX(SUBSTRING_INDEX(field_name, ';', nm.n), ';', -1)) <> 0
1、 把;替换为需要拆分的字符
2、um临时表是拆分的行数
3、length(SUBSTRING_INDEX(SUBSTRING_INDEX(field_name, ';', nm.n), ';', -1)) <> 0 是把拆分出为空的数据给过滤掉
4、replace(
SUBSTRING_INDEX(SUBSTRING_INDEX(field_name, ';', nm.n), ';', -1)
,'\n','') 因为我的字段当中含有换行,此处将换行替换为空