CREATE FUNCTION [dbo].[fn_StrSplit](@str VARCHAR(8000), @Separator VARCHAR(10)) RETURNS @re TABLE(FID VARCHAR(100)) AS BEGIN DECLARE @l INT, @i INT SELECT @i = LEN(@Separator), @l = LEN(@str) ;with cte as ( select 0 a, 1 b union all select b, charindex(@Separator, @str, b) + @i from cte where b > a ) insert into @re select substring(@str,a, case when b > @i then b-a-@i else @l - a + 1 end) value from cte where a >0 option (maxrecursion 4000) RETURN end GO
具體的使用方法為
例:
SELECT * FROM TABLE1 WHERE FID IN (1,2,3)
改為
SELECT * FROM TABLE1 T
JOIN fn_StrSplit('1,2,3',',') T1 ON T.FID = T1.FID