私は機能を持っています:
ALTER FUNCTION [dbo].[func_ParseString] (@list nvarchar(MAX))
RETURNS @tbl TABLE (string VARCHAR(500) NOT NULL) AS
BEGIN
DECLARE @pos int,
@nextpos int,
@valuelen int
SELECT @pos = 0, @nextpos = 1
WHILE @nextpos > 0
BEGIN
SELECT @nextpos = charindex(', ', @list, @pos + 1)
SELECT @valuelen = CASE WHEN @nextpos > 0
THEN @nextpos
ELSE len(@list) + 1
END - @pos - 1
INSERT @tbl (string)
VALUES (substring(@list, @pos + 1, @valuelen))
SELECT @pos = @nextpos
END
RETURN
END
私はテーブルを持っています
ID | 名前 | 年 |
---|---|---|
1 | ダン | 20 |
2 | クリス | 30 |
3 | アンディ | 20 |
select in ステートメントを実行しようとすると、カンマ区切りの文字列の最初の名前のすべての値のみが返されます
SELECT * FROM table
WHERE name IN (SELECT string COLLATE DATABASE_DEFAULT FROM [dbo].[func_ParseString]('Dan, Andy')
行1と3を返したい場合、これは行1のみを返します
誰か助けてくれませんか?