SQL字符串转为Int表函数StringToIntArray

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值