sqlite一行转多行

表 :chq3g4
字段:part

sqlite一行转多行_第1张图片

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!='';

结果
sqlite一行转多行_第2张图片

你可能感兴趣的:(乱炖小智慧,sql,数据库)