字符串转多列

CREATE PROCEDURE [dbo].[StrsToRows](@strSource nvarchar(max),@strSeparator nvarchar(10))
AS
BEGIN
    DECLARE @dwIndex INT ,@strResult NVARCHAR(1000),@sql NVARCHAR(max);
    set @sql=''
    SET @strSource = RTRIM(LTRIM(@strSource)); -- 消空格
    SET @dwIndex = CHARINDEX(@strSeparator,@strSource);  -- 取得第一个分隔符的位置
    WHILE @dwIndex>0
    BEGIN
        SET @strResult = LTRIM(RTRIM(LEFT(@strSource,@dwIndex-1)));
        SET @sql=@sql+''''+@strResult+''','
        SET @strSource = SUBSTRING(@strSource,@dwIndex+1,LEN(@strSource)-@dwIndex); --将要操作的字符串去除已切分部分
        SET @dwIndex=CHARINDEX(@strSeparator,@strSource); --循环量增加
    END
    --处理最后一节
    IF @strSource IS NOT NULL AND LTRIM(RTRIM(@strSource)) <> '' AND @strSource <> @strSeparator
        BEGIN
        set @sql=@sql+''''+@strSource+''''
        END
exec('select '+@sql)
END

 

posted @ 2019-12-04 16:33  流星泪  阅读(210)  评论(0编辑  收藏  举报