声明在SQL多值变量(Declare multiple value variable in SQL)

2019-10-18 20:06发布

我想设置的时候写的陈述RECEIPTIDS变量,这样我就可以在格式传递多个值到我的查询。 我曾尝试以下:

DECLARE @RECEIPTIDS VARCHAR(2000)
SET @RECEIPTIDS = ('R00013','R00028')

但是,我得到的错误:

不正确的语法附近“”。

Answer 1:

你需要额外的单qoutes。

    create table MyTable
    (
       ID varchar(50) 
    )
    insert into MyTable values('R00013')
    insert into MyTable values('R00028')
    insert into MyTable values('R00015')

    DECLARE @RECEIPTIDS VARCHAR(2000)
    SET @RECEIPTIDS = ('''R00013'',''R00028''')
    DECLARE @QUERY VARCHAR(100)

    SET @QUERY='SELECT * 
    from MyTable 
    where ID IN ('+@RECEIPTIDS+')'
    EXEC (@QUERY)

编辑:使用动态查询中使用它。



Answer 2:

使用临时数组或临时列表

DECLARE @ListofIDs TABLE(IDs VARCHAR(100))
INSERT INTO @ListofIDs VALUES('a'),('10'),('20'),('c'),('30'),('d')
SELECT IDs FROM @ListofIDs;


Answer 3:

你需要表变量或临时表 。

DECLARE @RECEIPTIDS TABLE(val VARCHAR(100))
Insert into @RECEIPTIDS values ('R00013'), ('R00028')

您可以在使用它作为

where field IN (Select val from @RECEIPTIDS)


Answer 4:

没有为我工作,要么但这并:

DECLARE @RECEIPTIDS TABLE(val VARCHAR(100))
Insert into @RECEIPTIDS values ('R00013'), ('R00028')

where field IN (Select val from @RECEIPTIDS)


文章来源: Declare multiple value variable in SQL