MySQL 直接用SQL分割字符串到数组
承接上文:MySQL 中在不编写存储过程或函数的前提下,利用SQL 语句拆分一个字符串到数组
主要思路其实一致:够造序列,然后结合MySQL的SUBSTRING_INDEX 函数的特性分割字符串。
SET @str ="a,b,c,d,e,f,g,h,i,j,k" ; SET @delim="," ; SET @str_length=length(@str)- length( REPLACE (@str,@delim,'') )+1 ; SELECT SUBSTRING_INDEX(SUBSTRING_INDEX( @str, @delim, tmp.seq),@delim, - 1) as str_split FROM ( SELECT s1.i + s2.i + s3.i + s4.i + s5.i + s6.i + s7.i + s8.i + s9.i+1 AS seq FROM ( SELECT 0 AS i UNION ALL SELECT 1 AS i ) s1 CROSS JOIN ( SELECT 0 AS i UNION ALL SELECT 2 AS i ) s2 CROSS JOIN ( SELECT 0 AS i UNION ALL SELECT 4 AS i ) s3 CROSS JOIN ( SELECT 0 AS i UNION ALL SELECT 8 AS i ) s4 CROSS JOIN ( SELECT 0 AS i UNION ALL SELECT 16 AS i ) s5 CROSS JOIN ( SELECT 0 AS i UNION ALL SELECT 32 AS i ) s6 CROSS JOIN ( SELECT 0 AS i UNION ALL SELECT 64 AS i ) s7 CROSS JOIN ( SELECT 0 AS i UNION ALL SELECT 128 AS i ) s8 CROSS JOIN ( SELECT 0 AS i UNION ALL SELECT 256 AS i ) s9 ORDER BY seq LIMIT 400 ) tmp WHERE tmp.seq <= @str_length