sql-在in语句中使用参数
我正在尝试在SQLServerManagementStudio中运行一个简单的脚本sql-在in语句中使用参数,sql,sql-server,Sql,Sql Server,我正在尝试在SQLServerManagementStudio中运行一个简单的脚本 Declare @total varchar (max) set @total = 1 Declare @total2 varchar (max) set @total2 = '1,4' if @total in (@total2) print 'Success' 由于某种原因,我无法让这个简单的脚本工作。当我这样做时,它会起作用,但如果“1,2”中有1,它将打印成功任何帮助[将不胜感激。使用集合而不是字符
Declare @total varchar (max)
set @total = 1
Declare @total2 varchar (max)
set @total2 = '1,4'
if @total in (@total2)
print 'Success'
由于某种原因,我无法让这个简单的脚本工作。当我这样做时,它会起作用,但如果“1,2”中有1,它将打印成功任何帮助[将不胜感激。使用集合而不是字符串。您可以声明一个表变量并执行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'
或使用字符串函数,如字符索引,但必须考虑部分匹配等。 您可以将逗号分隔的字符串转换为表,但仍然需要使用循环逐个插入值。
您需要使用动态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'' ' )
它能让你设置@total2='1,4'吗?谢谢你,这是我正在寻找的东西。我将设置@total2='1,4'更改为设置@total2='1=2选择5;将你的FavoriteTablehere;-'@KM。这样他就可以使用Quotename来避免SQL了injection@Ganesh如何在动态sql示例中设置参数值:exec'if'+@total+'在'+@total2+'集合'+@total3+'=hello'如果您使用字符串拆分函数,则可以在select SplitValue from dbo中使用if@total。YourSplitFunction@total2sql server拆分字符串表函数的web搜索如果拆分字符串,为什么需要一个循环?这是一篇关于拆分器的好文章。