sql - 在in语句中使用参数

时间:2015-01-09 17:57:06

标签: sql sql-server

我正在尝试在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'

出于某种原因,我无法让这个简单的脚本工作。虽然“如果1英寸('1,2')”它将打印“成功”任何帮助[将非常感谢。

2 个答案:

答案 0 :(得分:0)

IN适用于集合,而非字符串。您可以声明表变量并执行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这样的字符串函数,但是你必须考虑部分匹配等。

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

答案 1 :(得分:0)

您需要使用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'' ' )