sql 把一段用逗号连接的字符串分割之后插入临时表

BEGIN TRY DROP FUNCTION dbo.My_Split END TRY BEGIN CATCH END CATCH
GO
CREATE FUNCTION [dbo].[My_Split](@SourceSql NVARCHAR(MAX),@StrSeprate NVARCHAR(10))
RETURNS @temp TABLE(result NVARCHAR(100))
    --实现split功能 的函数
AS
BEGIN
    DECLARE @i INT
    SET @SourceSql=RTRIM(LTRIM(@SourceSql))                      --去掉左右两边的空格
    SET @SourceSql=SUBSTRING(@SourceSql,0,LEN(@SourceSql)-1)     --去掉最后一个逗号
    SET @i=CHARINDEX(@StrSeprate,@SourceSql)                     --返回第一个逗号的位置
    WHILE @i>=1
    BEGIN
        INSERT @temp VALUES(left(@SourceSql,@i-1))                 --把第一个逗号的左边插入临时表
        SET @SourceSql=SUBSTRING(@SourceSql,@i+1,LEN(@SourceSql)-@i) --从第一个逗号的后面截取 整个字符串的长度再减去第一个逗号以前的长度
        SET @i=CHARINDEX(@StrSeprate,@SourceSql)                    --依次循环
    END
    IF @SourceSql<>'\'
        INSERT @temp VALUES(@SourceSql)
    RETURN
END

例如

declare @sql nvarchar(2000)
set @sql='AppIP,AppName,AppProtocol,AttachmentsTooLargeReply,AttachmentsTooLargeReplySubject,'
select * from dbo.My_Split(@sql,',')

 

 

posted @ 2016-12-14 16:00  牧夫座  阅读(319)  评论(0编辑  收藏  举报