FUNCTION [dbo].[Fun_StringToIntArray]
(
@str NTEXT
)
RETURNS @table TABLE([item] INT)
/*
功能:转换字符串为INT类型的表
*/
AS
BEGIN
DECLARE @split NVARCHAR(1)
DECLARE @startIndex INT
DECLARE @index INT
DECLARE @length INT
DECLARE @temp NVARCHAR(40)
DECLARE @subStr NVARCHAR(4000)
DECLARE @index2 INT
DECLARE @startIndex2 INT
DECLARE @length2 INT
SET @split = N','
SET @length2 = DATALENGTH(@str) / 2
IF @length2 > 0
BEGIN
-- 分拆成subString
SET @index2 = 1
SET @startIndex2 = 1
WHILE (@startIndex2 <= @length2)
BEGIN
SET @subStr = RTRIM(LTRIM(SUBSTRING(@str , @startIndex2 , 4000)))
SET @index2 = CHARINDEX(@split , @subStr, 3900)
IF (@index2 =0)
SET @index2 = 4000
SET @startIndex2 = @startIndex2 + @index2
SET @subStr = LEFT(@subStr, @index2 - 1)
-- subString转换为INT
SET @length = DATALENGTH(@subStr) / 2
IF @length > 0
BEGIN
SET @startIndex = 1
SET @index = 1
SET @temp = N''
SET @index = CHARINDEX(@split , @subStr , @startIndex)
WHILE @index > 0
BEGIN
SET @temp = RTRIM(LTRIM(SUBSTRING(@subStr , @startIndex , @index - @startIndex)))
IF LEN(@temp) > 0
BEGIN
INSERT
@table
SELECT
CAST(@temp AS INT)
END
SET @startIndex = @index + LEN(@split)
SET @index = CHARINDEX(@split , @subStr , @startIndex)
END
SET @temp = RTRIM(LTRIM(SUBSTRING(@subStr , @startIndex , @length - @startIndex + 1)))
IF LEN(@temp) > 0
BEGIN
INSERT
@table
SELECT
CAST(@temp AS INT)
END
END
END
END
RETURN
END
SQL字符串转为Int表函数StringToIntArray
最新推荐文章于 2022-03-29 14:34:03 发布