結果セットを返す関数を使用する必要があります(csv形式を取り、テーブルを返します)
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Splitt] (@String NVARCHAR(4000),
@Delimiter CHAR(1))
RETURNS @Results TABLE (
Items NVARCHAR(4000))
AS
BEGIN
DECLARE @Index INT
DECLARE @Slice NVARCHAR(4000)
SELECT @Index = 1
IF @String IS NULL
RETURN
WHILE @Index != 0
BEGIN
SELECT @Index = Charindex(@Delimiter, @String)
IF @Index <> 0
SELECT @Slice = LEFT(@String, @Index - 1)
ELSE
SELECT @Slice = @String
IF ( NOT EXISTS (SELECT *
FROM @Results
WHERE items = @Slice) )
INSERT INTO @Results
(Items)
VALUES (@Slice)
SELECT @String = RIGHT(@String, Len(@String) - @Index)
IF Len(@String) = 0
BREAK
END
RETURN
END
そして今、あなたは書くことができます:
DECLARE @s VARCHAR(MAX)
SET @s='74,77,79,80'
Select * FROM Sample WHERE Id IN (select items from dbo.Splitt(@s,','))