您可以将 id 作为, 分隔的字符串传递,并使用用户定义函数对其进行拆分:
试试下面:
UDF
CREATE FUNCTION [dbo].[Udf_stringtolist] (@List NVARCHAR(max),
@Delimeter NVARCHAR(10))
returns @tmpListTable TABLE (
value NVARCHAR(max))
AS
BEGIN
DECLARE @DelimPosition INT
SELECT @DelimPosition = Charindex(@Delimeter, @List)
WHILE @DelimPosition > 0
BEGIN
INSERT INTO @tmpListTable
(value)
VALUES (Cast(Ltrim(Rtrim(LEFT(@List, @DelimPosition - 1))) AS
VARCHAR(
100)))
SELECT @List = RIGHT(@List, Len(@List) - @DelimPosition),
@DelimPosition = Charindex(@Delimeter, @List)
END
IF Len(@List) > 0
INSERT INTO @tmpListTable
(value)
VALUES (Cast(Ltrim(Rtrim(@List)) AS VARCHAR(100)))
RETURN
END
使用函数:
DECLARE @idList NVARCHAR(max)=',1,2,3,4,5,6';
SELECT bookingid,
dogid
FROM booking
WHERE dogid IN (SELECT *
FROM [dbo].[Udf_stringtolist] (@idList, ',')
ORDER BY 1)