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