如何生成附加行号的字符串列并输出下游可用的指定格式数据
解决方案
使用递归CTE生成目标序列行
假设你的表名为your_table,以下SQL通过递归公共表表达式(CTE)实现需求,完全符合你要求的输出格式,且无需使用RAISE语句:
实现代码
WITH RECURSIVE seq_gen AS ( SELECT field1, cnt, 1 AS num FROM your_table WHERE cnt >= 1 UNION ALL SELECT field1, cnt, num + 1 FROM seq_gen WHERE num + 1 <= cnt ) SELECT CONCAT(field1, '|', num) AS output_line FROM seq_gen ORDER BY field1, num;
工作原理
- 初始查询:从原表中取出每条有效记录(
cnt >=1),初始化起始数字为1。 - 递归迭代:每次将数字递增1,直到数字达到对应记录的
cnt值上限。 - 格式拼接:用
CONCAT把字段和数字拼接成field1|数字的格式,按字段和数字排序输出。
示例输出
针对你提供的示例数据(Car→4,Truck→3),执行后会输出:
Car|1 Car|2 Car|3 Car|4 Truck|1 Truck|2 Truck|3
导出方式
执行完SQL后,直接通过数据库客户端的导出功能(如导出为TXT、CSV等)即可得到可供下游使用的结构化数据文件。
内容的提问来源于stack exchange,提问作者kiknit
相关产品推荐
相关产品推荐

