表 :chq3g4
字段:part
WITH split(word, str) AS (
-- 构成递归搜索的起始数据
SELECT '', part||';' from chq3g4
--递归建表的核心是一条以 union(all) 连接的复合查询语句(所谓迭代:是指每一次递归都要调用上一次查询的结果集,UNION ALL 是指每次都把结果集并在一起)
UNION ALL
-- 构成递归查询的生成语句
SELECT
substr(str, 0, instr(str, ';')),--取出字符串中第一个字符串,如a;b;c;取出a
substr(str, instr(str, ';')+1) -- 取出除一个的其他字符串,如a;b;c;取出b;c
FROM split
WHERE str!='' --直到str返回空值才停止迭代
) SELECT word FROM split WHERE word!='';
结果