创建一个函数来拆分为下面的逗号分隔值,
CREATE FUNCTION [dbo].[FnSplit]
(
@List nvarchar(2000),
@SplitOn nvarchar(5)
)
RETURNS @RtnValue table
(
Id int identity(1,1),
Value nvarchar(100)
)
AS
BEGIN
While (Charindex(@SplitOn,@List)>0)
Begin
Insert Into @RtnValue (value)
Select
Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))
Set @List = Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))
End
Insert Into @RtnValue (Value)
Select Value = ltrim(rtrim(@List))
Return
END
在你的存储过程调用下面的函数,
CREATE PROCEDURE usp_getvalues
@var1 nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM tblEmp e
INNER JOIN tblDepartment d
on d.DeptID = e.DeptID
WHERE d.DeptID IN (SELECT value FROM [dbo].[FnSplit](@var1))
SET NOCOUNT OFF;
END
我不知道有什么方法除了将多个值作为单个分隔字符串传递并在SQL代码中进行分解以外。 – jmcilhinney
@jmcilhinney - 还有其他的选择,但它们都是*(imo)*也很笨重。例如,表值参数? – MatBailie