Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql-在in语句中使用参数_Sql_Sql Server - Fatal编程技术网

sql-在in语句中使用参数

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,它将打印成功任何帮助[将不胜感激。使用集合而不是字符

我正在尝试在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,它将打印成功任何帮助[将不胜感激。

使用集合而不是字符串。您可以声明一个表变量并执行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搜索如果拆分字符串,为什么需要一个循环?这是一篇关于拆分器的好文章。