如何在sp_executesql中传递逗号分隔列表

时间:2014-11-13 22:03:28

标签: in-clause sp-executesql

我想在sp_executesql中使用IN opeartor,但是面对错误的语法接近' @TagIndexListToAdjust'。

此错误是由参数值'(1,2,3)'。

两侧的单引号引起的。

我只需要在sp_executesql中修复它,因为此查询是由C#模型类生成的。

 USE [master]
    GO
    IF  EXISTS (SELECT * 
                FROM sys.objects
                WHERE object_id = OBJECT_ID(N'[dbo].[Persons]') AND type in (N'U'))
    DROP TABLE [dbo].Persons
    GO
    USE [master]
    GO
    CREATE TABLE Persons
    (
          commaList nvarchar(MAX),
    );
    insert into Persons values ('1')
    insert into Persons values ('2')
    insert into Persons values ('3')

    GO

    exec sp_executesql N'

    Select * 
    from Persons 
    where commaList in @TagIndexListToAdjust',
          N'@TagIndexListToAdjust varchar(67)',
          @TagIndexListToAdjust='(1,2,3)'

在修复错误时会有任何帮助。

1 个答案:

答案 0 :(得分:0)

使用2个引号..一个用于转义另一个。