Sql server SQL Server中的IN语句
问题1:Sql server SQL Server中的IN语句,sql-server,sql-server-2008,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
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
任何解释都将不胜感激。谢谢,因为查询2将导致
WHERE [UserId] IN ('7,8')
它是一个字符串(包含2个值),而不是单独的值
查询1完全是一个字符串,将被转换为
WHERE [UserId] IN (7,8)
(注意引号),因为查询2的结果是
WHERE [UserId] IN ('7,8')
它是一个字符串(包含2个值),而不是单独的值
查询1完全是一个字符串,将被转换为
WHERE [UserId] IN (7,8)
(注意引号)在查询1中哪一个应该是相同的情况?否?否,查询1本身是一个字符串,将被转换为查询。因此,根据您的回答,如果我将“替换为空”,它应该在第二个查询中起作用,对吗?您不能这样做。要么在其中放置单独的值,要么像在查询1中那样使用动态查询,这在查询1中应该是相同的情况?否?否,查询1本身是一个字符串,将被转换为查询。因此,根据您的回答,如果我将“替换为空”,它应该在第二个查询中起作用,对吗?您不能这样做。要么在其中放入单独的值,要么像在查询1中那样使用动态查询