1

我想在设置RECEIPTIDS变量时编写一个 IN 语句,以便可以将该格式的多个值传递到我的查询中。我尝试了以下方法:

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

但是,我收到错误:

',' 附近的语法不正确。

4

4 回答 4

5

您需要表变量临时表

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

您可以在 IN 中将其用作

where field IN (Select val from @RECEIPTIDS)
于 2013-10-25T08:30:12.230 回答
3

使用临时数组或临时列表

DECLARE @ListofIDs TABLE(IDs VARCHAR(100))
INSERT INTO @ListofIDs VALUES('a'),('10'),('20'),('c'),('30'),('d')
SELECT IDs FROM @ListofIDs;
于 2013-10-25T08:32:02.083 回答
3

你需要额外的单引号。

    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)

已编辑:将其与动态查询一起使用。

于 2013-10-25T08:36:26.270 回答
0

对我也不起作用,但这确实:

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

where field IN (Select val from @RECEIPTIDS)
于 2014-04-23T13:46:02.560 回答