0

我有从需要作为字符串输入并填充的参数传递的整数值,以便它们是 7 位数字。然后这将被传递到另一个查询中。

   declare @t table(ctl_num int)
   insert into @t values(5675, 45464, 2323)

   declare @control_num varchar(500)

   set @control_num = (select stuff((select ',' + right('000' + cast(ctl_num as varchar),7)
                      from @t
                      FOR XML PATH('')),1, 1', ''))

此代码将 @control_num 设置为 ('0005675, 0045464, 0002323')。我需要将其作为(“0005675”、“0045464”、“0002323”)传递。

我已经在线查看了其他示例,但似乎无法使其正常工作。有谁知道如何在每个值周围加上双引号?

4

2 回答 2

2

我认为设置中存在一些问题@control_num

请尝试以下方法:

set @control_num = (select stuff((select ',"' + right('000' + cast(ctl_num as varchar),7) + '"'
                      from @t
                      FOR XML PATH('')),1, 1, ''))
于 2021-09-03T15:31:48.690 回答
0

我会建议:

select string_agg(concat('"', right('000' + cast(ctl_num as varchar(255)), 7), '"', ',')
from @t;

string_agg()自 SQL Server 2017 起已可用。另请注意,在 SQL Server 中引用字符串时应始终包含长度。

于 2021-09-03T15:12:10.357 回答