SQL Server中的IN语句

时间:2013-11-30 12:43:49

标签: sql-server sql-server-2008

查询1:

DECLARE @strSQL NVARCHAR(MAX) = ''
DECLARE @MultiIDs NVARCHAR(50) = '7,8'
SET @strSQL = 'SELECT TOP 1 [User].PracticeID FROM [User] WHERE [UserId] IN (' + @MultiIDs + ')'    
EXEC(@strSQL)

查询2:

DECLARE @MultiIDs NVARCHAR(550) = '7,8'
SELECT TOP 1 [User].PracticeID FROM [User] WHERE [UserId] IN (@MultiIDs)    

为什么Query1不能运行Query2?

非常感谢任何解释。感谢

1 个答案:

答案 0 :(得分:4)

因为查询2导致

WHERE [UserId] IN ('7,8') 

一个字符串(包含2个值),而不是单独的值。

查询1完全是一个字符串,将被翻译成

WHERE [UserId] IN (7,8) 

(注意引号)