SQLServer Split函数

早过忘川 提交于 2019-12-10 17:25:44
CREATE FUNCTION [dbo].[SqlServer_Split]
(@SourceSql NVARCHAR(MAX),@StrSeprate NVARCHAR(10))--@SourceSql:要截取的字符串,@StrSeprate:分隔符,例如:‘,’
RETURNS @temp TABLE(result NVARCHAR(100))
    --实现split功能 的函数
AS
BEGIN
    DECLARE @TempString NVARCHAR(50)= ''; --临时存放的字符串
    WHILE ( CHARINDEX(',', @SourceSql) <> 0 )
        BEGIN
            SET @TempString = SUBSTRING(@SourceSql, 1,CHARINDEX(',', @SourceSql) - 1); --截取左边第一个逗号的值(不包括,)。
			
            INSERT  @temp
                    ( result )
            VALUES  ( @TempString  -- result - nvarchar(100)
                      ); --把第一个逗号的左边插入临时表(不包括,)               
		    
            SET @SourceSql = STUFF(@SourceSql, 1, CHARINDEX(',', @SourceSql),''); --把逗号左边的数据替代为''(这个替代包括,),取右边的数据重新赋值给@SourceSql
            IF ( CHARINDEX(',', @SourceSql) = 0 )--
                BEGIN
                    INSERT  @temp
                            ( result )
                    VALUES  ( @SourceSql  -- result - nvarchar(100)
                              );
                    RETURN;
                END;
        END;
    RETURN;  
END
GO
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!