我有一個函數:字符串分割SQL函數只返回第一個詞串
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 --- name --- age
1 --- Dan --- 20
2 --- Chris --- 30
3 --- Andy --- 20
當我嘗試選擇在聲明它只返回所有值的在我的逗號分隔的字符串名字
SELECT * FROM table
WHERE name IN (SELECT string COLLATE DATABASE_DEFAULT FROM [dbo].[func_ParseString]('Dan, Andy')
這隻能返回第1行,當我想返回行1和3
有人可以幫忙嗎?
爲我工作,我用它當我打電話的功能,因此使用你給了第二個選項,非常感謝你 – Win