【发布时间】:2020-10-10 20:11:50
【问题描述】:
我是 SQL 的初学者。这可能是一篇旧帖子,但我没有得到任何简化的解决方案。
我关心的是如何在动态 SQL 中使用IN 子句,其中IN 项基于具有多个值的参数。
我有一个名为 Employee 的表。
我编写了一个动态 SQL,它将返回 Department = 'IT,System' 所在的员工列表
SQL:
Declare @Department varchar(50)
Declare @SQL nvarchar(MAX)
Declare @Parameters nvarchar(50)
Set @Department='IT,System'
SET @SQL = 'select * from Employee where Department IN(@PDepartment)'
SET @Parameters=N'@PDepartment nvarchar(50)'
--PRINT @SQL
EXEC sp_Executesql @SQL,@Parameters,@PDepartment=@Department
此脚本不适用于多个部门并且不返回任何结果。如果@Department = 'IT'
这里我提到了真实场景的一小部分。在实际情况下,IN 运算符中将包含的表名、列名都是动态的,并且将被接受为存储的 proc 参数。
感谢您的帮助。
【问题讨论】:
标签: sql sql-server string select dynamic-sql