SQLite如何更简洁地生成大量常量字符串值组成的行列表
方案1:使用VALUES表值子句(适用SQLite 3.39.0及以上版本,最适合无规律常量字符串场景)
这是替代UNION写法最简单的方案,不需要重复写SELECT和UNION,新增行只需要补VALUES后的括号条目即可:
SELECT column1 AS id FROM ( VALUES ('somestring'), ('someotherstring'), ('thirdstring'), -- 按需继续添加条目,单VALUES子句最多支持65535行 ('your_100th_string') );
方案2:使用递归CTE生成(适合有固定前缀/规律的字符串场景)
如果你的常量字符串是带有序号等规律的格式,不需要手动逐个写字符串内容,直接用递归生成即可,100行甚至上千行都只需要几行代码:
-- 示例生成id为str1到str100的100行数据 WITH RECURSIVE generate_seq(num) AS ( SELECT 1 UNION ALL SELECT num + 1 FROM generate_seq WHERE num < 100 ) SELECT 'str' || num AS id FROM generate_seq;
方案3:使用split拆分长字符串(适用SQLite 3.41.0及以上版本)
如果不想写大量括号,可以把所有常量字符串用一个不会出现在内容里的分隔符拼接成长串,直接用内置split函数拆分得到行:
-- 示例用逗号作为分隔符,按需替换为其他不会出现的分隔符即可 SELECT value AS id FROM split('somestring,someotherstring,thirdstring,...,your_100th_string', ',');
内容的提问来源于stack exchange,提问作者Freude
相关产品推荐
相关产品推荐

