SQL使用SELECT FOR XML PATH按排序拼接带递增计数器的字符串问题
SQL字符串拼接解决方案
你当前使用的是SQL Server语法,可通过窗口函数生成递增序号的方式实现需求,正确写法如下:
SELECT STUFF(( SELECT '&p' + CAST(ROW_NUMBER() OVER (ORDER BY [ORDER] ASC) AS VARCHAR(10)) + '=' + FILENAME FROM MYTABLE WHERE [ORDER] <> 0 ORDER BY [ORDER] ASC FOR XML PATH(''), TYPE ).value('.', 'VARCHAR(MAX)'), 1, 1, '') AS Txt
核心逻辑说明
[ORDER]是SQL保留关键字,使用方括号包裹避免语法报错ROW_NUMBER() OVER (ORDER BY [ORDER] ASC)会给过滤后的行按ORDER字段升序生成从1开始的连续序号,对应你需要的p1、p2、p3前缀- 添加
TYPE和.value('.', 'VARCHAR(MAX)')是为了避免文件名中存在特殊字符时被XML自动转义,保证返回原始字符串内容 - STUFF函数作用是去掉拼接结果开头多余的第一个&符号
内容的提问来源于stack exchange,提问作者Ibsp Team
相关产品推荐
相关产品推荐

