您的位置:首页 > 数据库

MSSQL 自定义函数实现类似于 split 方法,返回表

2015-06-11 16:29 501 查看
这个函数的功能就是把一个字符串(按照特定的分隔符连接起来形成的字符串),按照指定的分隔符分割形成N个记录并插入一个临时表

=============================================
-- Author:          <CMO>
-- Create date: <2015-04-28>
-- Description:     实现类似于 split 方法,返回表
--使用方法:
--select * from [SplitToTable]('1111;2222;3333',';')
--返回
--id  |  value
--1   |  1111
--2   |  2222
--3   |  3333
-- =============================================
Create FUNCTION [dbo].[SplitToTable]
(
     @SplitString nvarchar(max),
     @Separator nvarchar(10)=' '
)
RETURNS @SplitStringsTable TABLE
(
[id] int identity(1,1),
[value] nvarchar(max)
)
AS
BEGIN
     DECLARE @CurrentIndex int;
     DECLARE @NextIndex int;
     DECLARE @ReturnText nvarchar(max);
     SELECT @CurrentIndex=1;
     WHILE(@CurrentIndex<=len(@SplitString))
         BEGIN
             SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);//CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置
             IF(@NextIndex=0 OR @NextIndex IS NULL)
                 SELECT @NextIndex=len(@SplitString)+1;
                 SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);
                 INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);
                 SELECT @CurrentIndex=@NextIndex+1;
             END
     RETURN;
END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: