文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Sql Server Split函数

Sql Server Split函数

时间:2011-05-19  来源:colder

创建表值函数Split 

Create FUNCTION [dbo].[split]

    (       @Long_str VARCHAR(8000) ,       @split_str VARCHAR(100)     ) RETURNS @tmp TABLE     (       ID INT IDENTITY              PRIMARY KEY ,       short_str VARCHAR(8000)     ) AS      BEGIN            DECLARE @long_str_Tmp VARCHAR(8000) ,             @short_str VARCHAR(8000) ,             @split_str_length INT              SET @split_str_length = LEN(@split_str)             IF CHARINDEX(@split_str, @Long_str) <= 0              BEGIN                 INSERT  INTO @tmp                         SELECT  @Long_str             END         ELSE              BEGIN                 IF CHARINDEX(@split_str, @Long_str) = 1                      SET @long_str_Tmp = SUBSTRING(@Long_str,                                                   @split_str_length + 1,                                                   LEN(@Long_str)                                                   - @split_str_length)                   ELSE                      SET @long_str_Tmp = @Long_str                   IF CHARINDEX(REVERSE(@split_str), REVERSE(@long_str_Tmp)) > 1                      SET @long_str_Tmp = @long_str_Tmp + @split_str                     ELSE                      SET @long_str_Tmp = @long_str_Tmp                       WHILE CHARINDEX(@split_str, @long_str_Tmp) > 0                      BEGIN                            SET @short_str = SUBSTRING(@long_str_Tmp, 1,                                                    CHARINDEX(@split_str,                                                              @long_str_Tmp)                                                    - 1)                             DECLARE @long_str_Tmp_LEN INT ,                             @split_str_Position_END INT                            SET @long_str_Tmp_LEN = LEN(@long_str_Tmp)                             SET @split_str_Position_END = LEN(@short_str)                             + @split_str_length                             SET @long_str_Tmp = REVERSE(SUBSTRING(REVERSE(@long_str_Tmp),                                                               1,                                                               @long_str_Tmp_LEN                                                               - @split_str_Position_END))                         IF @short_str <> ''                              INSERT  INTO @tmp                                     SELECT  @short_str                     END             END                  RETURN          END

 

 用游标循环获取Split的值

 

        DECLARE cur_user CURSOR FOR         SELECT short_str FROM dbo.split(@UserIDs,',')         OPEN cur_user         FETCH NEXT FROM cur_user INTO @userId         WHILE @@fetch_status = 0              BEGIN                 INSERT  INTO #User                         SELECT  UserId ,                                 MO_StaffID ,                                 UserName                         FROM    dbo.aspnet_Users                         WHERE   UserId = @userId ;                 FETCH NEXT FROM cur_user INTO @userId                 END         CLOSE cur_user

        DEALLOCATE cur_user 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载