SQL Server拼接补零7位数字字符串时如何为每个值添加双引号
修正后的完整代码
declare @t table(ctl_num int) -- 修复原INSERT语法错误,多值插入每个值需单独用括号包裹 insert into @t values(5675),(45464),(2323) declare @control_num varchar(500) set @control_num = '(' + ( select stuff(( -- 每个值前后拼接双引号,前导零补7个保证短数字也能凑够7位 select ',"' + right('0000000' + cast(ctl_num as varchar),7) + '"' from @t FOR XML PATH('') ),1, 1, '') -- 修复原STUFF参数的多余单引号错误 ) + ')'
关键修改说明
- 修复了原代码两处语法问题:INSERT多值插入的格式错误、STUFF函数最后一个参数的多余单引号
- 拼接每个补零后的编号时,前后直接包裹双引号即可实现目标格式
- 前导零从3个改成7个,是为了兼容1位的极小数值,避免补零不足导致长度不够7位的问题
- 最终结果外层包裹括号,输出格式完全匹配需求:
("0005675","0045464","0002323")
内容的提问来源于stack exchange,提问作者jackstraw22
相关产品推荐
相关产品推荐

