在SQL中声明多值变量
在设置在SQL中声明多值变量,sql,sql-server-2008,Sql,Sql Server 2008,在设置RECEIPTIDS变量时,我想写一个IN语句,这样我就可以将该格式的多个值传递到查询中。我尝试了以下方法: DECLARE @RECEIPTIDS VARCHAR(2000) SET @RECEIPTIDS = ('R00013','R00028') 但是,我得到了一个错误: “,”附近的语法不正确 你需要或者说 你可以把它用在 where field IN (Select val from @RECEIPTIDS) 你需要或者说 你可以把它用在 where field IN (Se
RECEIPTIDS
变量时,我想写一个IN语句,这样我就可以将该格式的多个值传递到查询中。我尝试了以下方法:
DECLARE @RECEIPTIDS VARCHAR(2000)
SET @RECEIPTIDS = ('R00013','R00028')
但是,我得到了一个错误:
“,”附近的语法不正确
你需要或者说
你可以把它用在
where field IN (Select val from @RECEIPTIDS)
你需要或者说
你可以把它用在
where field IN (Select val from @RECEIPTIDS)
使用临时数组或临时列表
DECLARE @ListofIDs TABLE(IDs VARCHAR(100))
INSERT INTO @ListofIDs VALUES('a'),('10'),('20'),('c'),('30'),('d')
SELECT IDs FROM @ListofIDs;
使用临时数组或临时列表
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)
编辑:与动态查询一起使用。您需要额外的单个QOUTE
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)
对我来说也不起作用,但这确实起了作用:
DECLARE @RECEIPTIDS TABLE(val VARCHAR(100))
Insert into @RECEIPTIDS values ('R00013'), ('R00028')
where field IN (Select val from @RECEIPTIDS)
这并不能回答问题,因为这会导致一个变量包含一个
单个值
,而OP询问的是一个变量中的多个值,您需要使用函数将该字符串拆分为一个值序列,以提供完整的example@DrCopyPaste更新了答案,OP可以和动态queryNice one一起使用!如果有人想在网上试一试的话,这里还有一把小提琴。这并不能回答问题,因为这会导致一个变量包含一个单个值
,而OP询问的是一个变量中的多个值,您需要使用函数将该字符串拆分为一个值序列,以提供完整的example@DrCopyPaste更新了答案,OP可以和动态queryNice one一起使用!如果有人想在网上试一试的话,这里还有一把小提琴。我得到以下信息:必须声明标量变量
我能够成功执行它。我怀疑某处有打字错误。不,我不能执行。我用方括号括住了变量,但仍然没有幸运地首先执行上面的示例。如果它没有执行,则我怀疑SQL server版本问题。我得到以下信息:必须声明标量变量
我能够成功执行它。我怀疑某处有打字错误。不,我不能执行。我用方括号括住了变量,但仍然没有幸运地首先执行上面的示例。如果未执行,则我怀疑SQL server版本问题。我收到以下错误:必须声明标量变量
我收到以下错误:必须声明标量变量