sql - 在 in 语句中使用参数

sql - using parameters in a in statement

我正在尝试 运行 SQL Server Management Studio 中的一个简单脚本。

Declare @total varchar (max)
set @total = 1

Declare @total2 varchar (max)
set @total2 = '1,4'

if @total in (@total2)
print 'Success'

出于某种原因,我无法使这个简单的脚本运行。当我这样做时它会起作用 "if 1 in ('1,2')" 它会打印 "Success" 任何帮助[将不胜感激。

IN 适用于集合,不适用于字符串。您可以声明一个 table 变量并执行 INSERT 语句:

Declare @total varchar (max)
set @total = 1

Declare @total2 TABLE varchar (max)
(
  total int
)
INSERT INTO @total2 VALUES (1)
INSERT INTO @total2 VALUES (4)

if @total in (SELECT total FROM @total2)
print 'Success'

或者使用像CHARINDEX这样的字符串函数,但是你必须考虑部分匹配等

可以 将逗号分隔的字符串转换为 table,但您仍然需要使用循环逐一插入值。

您需要使用 Dynamic SQL 因为您的 @total 包含 varchar 而不是数字

Declare @total varchar (max)
set @total = 1

Declare @total2 varchar (max)
set @total2 = '1,4'

exec ('if '+@total+' in ('+@total2+') print ''Success'' ' )