记录一下,效率比旧的字符串分割效率高
ALTER FUNCTION [dbo].[UF_SpliteIntToTable]
(
@String VARCHAR(8000)
)
RETURNS @Table TABLE (Id INT)
AS
BEGIN
DECLARE @SpliteChar AS CHAR(1) = ',';
WITH TempTable AS
(
SELECT CAST(SUBSTRING(@String,1,CHARINDEX(@SpliteChar,@String,1) - 1) AS INT) AS item,
SUBSTRING(@String,CHARINDEX(@SpliteChar,@String,1) + 1, LEN(@String)) + @SpliteChar AS list
UNION ALL
SELECT CAST(SUBSTRING(list,1,CHARINDEX(@SpliteChar,list,1) - 1) AS INT) AS item,
SUBSTRING(list,CHARINDEX(@SpliteChar,list,1) + 1, LEN(list)) AS list
FROM TempTable
WHERE LEN(TempTable.list) > 0
)
INSERT INTO @Table SELECT item FROM TempTable WHERE item > 0
RETURN
END