ALTER FUNCTION fun_GetIDTable (@str NVARCHAR(MAX) )
RETURNS @tab TABLE ( ID INT )
AS
BEGIN
DECLARE @i INT
SET @str = RTRIM(LTRIM(@str))
SET @i = CHARINDEX(',', @str)
WHILE @i >= 1
BEGIN
INSERT @tab( ID )
VALUES ( LEFT(@str, @i - 1) )
SET @str = SUBSTRING(@str, @i + 1, LEN(@str) - @i)
SET @i = CHARINDEX(',', @str)
END
IF @str <> ','
INSERT INTO @tab( ID )
VALUES ( @str )
RETURN
END
GO
SELECT * FROM fun_GetIDTable('1,2,3,4')
输入结果就是
ID
1
2
3
4
做这个功能的原因就是我存储过程需要传入了字符串参数 @ID = '1,2,3,4'
我要根据这个参数去查询
select * from table where ID in 这个传入的参数,所以我就写了以上方法。
这样的话,我就可以直接select * from table where id in (SELECT ID FROM fun_GetIDTable(@ID)) 这样就好用多了