【问题标题】:Need to add double quotes to SQL SERVER string values需要为 SQL SERVER 字符串值添加双引号
【发布时间】:2021-11-01 22:12:20
【问题描述】:

我有从需要作为字符串输入并填充的参数传递的整数值,以便它们是 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") 传递。

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

【问题讨论】:

  • 仅供参考,您应该真正检查您的 DDL 和 DML 语句在发布之前。您将@t 定义为单列表变量,然后尝试向其中插入三个 列,导致语句失败。

标签: sql sql-server string parameter-passing stuff


【解决方案1】:

我认为设置@control_num有一些问题。

请尝试以下方法:

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

【讨论】:

    【解决方案2】:

    我建议:

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

    string_agg() 自 SQL Server 2017 以来一直可用。另请注意,在 SQL Server 中引用字符串时,您应该始终包含长度。

    【讨论】:

    • 我使用的是 SQL Server 2012
    猜你喜欢
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2022-08-17
    相关资源
    最近更新 更多