我想在设置RECEIPTIDS
变量时编写一个 IN 语句,以便可以将该格式的多个值传递到我的查询中。我尝试了以下方法:
DECLARE @RECEIPTIDS VARCHAR(2000)
SET @RECEIPTIDS = ('R00013','R00028')
但是,我收到错误:
',' 附近的语法不正确。
我想在设置RECEIPTIDS
变量时编写一个 IN 语句,以便可以将该格式的多个值传递到我的查询中。我尝试了以下方法:
DECLARE @RECEIPTIDS VARCHAR(2000)
SET @RECEIPTIDS = ('R00013','R00028')
但是,我收到错误:
',' 附近的语法不正确。
使用临时数组或临时列表
DECLARE @ListofIDs TABLE(IDs VARCHAR(100))
INSERT INTO @ListofIDs VALUES('a'),('10'),('20'),('c'),('30'),('d')
SELECT IDs FROM @ListofIDs;
你需要额外的单引号。
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)
已编辑:将其与动态查询一起使用。
对我也不起作用,但这确实:
DECLARE @RECEIPTIDS TABLE(val VARCHAR(100))
Insert into @RECEIPTIDS values ('R00013'), ('R00028')
where field IN (Select val from @RECEIPTIDS)