加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

用sqlserver手动写个split(字符分割)

发布时间:2020-12-12 13:05:25 所属栏目:MsSql教程 来源:网络整理
导读:因为sqlserver中没有字符分割这个东西,所以无聊的时候写了个! 关键是用的地方还是比较多的 大概用到三个函数吧!算法就不用说了, 大致的跟你想的差不多 直接上测试三个函数和字符分割例子,不明白的留言或者发邮件 select len('231')--结果:3select len('

因为sqlserver中没有字符分割这个东西,所以无聊的时候写了个!

关键是用的地方还是比较多的

大概用到三个函数吧!算法就不用说了,

大致的跟你想的差不多


直接上测试三个函数和字符分割例子,不明白的留言或者发邮件



select len('231')
--结果:3
select len('231')
--结果:4
select charindex('0','303030')
--结果:2
select charindex('0','303030',1)
--结果:2
select charindex('0',2)
--结果:2
select charindex('0',3)
--结果:4
select charindex('0',4)
--结果:4
select substring('ssdsdadc',2,5)
--结果:sdsda
select substring('ssdsdadc',1,5)
--结果:ssdsd
select substring('ssdsdadc',2)
--结果:ss


create FUNCTION [dbo].[SplitToTable]
 (
     @SplitString nvarchar(max),@Separator nvarchar(10)=' '
 )
 RETURNS @SplitStringsTable TABLE
 (
 [id] int identity(1,1),[value] nvarchar(max)
 )
 AS
 BEGIN
	 --select * from dbo.SplitToTable('11,22,33,44,55,66',',')
	 
     DECLARE @CurrentIndex int;
     DECLARE @NextIndex int;
     DECLARE @ReturnText nvarchar(max);
     SELECT @CurrentIndex=1;
     WHILE(@CurrentIndex<=len(@SplitString))
         BEGIN
             SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
             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
 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读