为什么以下SQL不会抓取任何东西
DECLARE @Status AS VARCHAR(400)
SET @status = '''Closed'',''OPEN'''
select * from MYTABLE where status in(@status)
虽然如此
select * from MYTABLE where status in('Closed','Open')
抓取我的行
答案 0 :(得分:4)
您的第一个问题会检查数据库中是否存在值'Closed','OPEN'
。这些值不会扩展。
如果您使用SQL Server 2008或更高版本,则可以使用Table Valued Parameters来实现相同的目标。
答案 1 :(得分:4)
如果你想做一些动态SQL,你可以,但我认为它不具备真正的竞争力。
DECLARE @Status nVARCHAR(400),
@SQL nvarchar(500)
SET @status = '''Closed'''+','+'''OPEN'''
set @SQL = '
select * from [MYTABLE] where status in('+@status +')'
exec sp_executesql @SQL
GO