SQL SERVER分隔函数,根据传入值,获取第几个分隔的值

       这个题目描述的有点乱,大家看需求吧,论坛帖子的需求, 实现类似程序中,可以用string[] arr=“1.12.123”.split(.) 如果我要取12 则可以arr[1]。

CREATE FUNCTION dbo.F_SplitByIdex
 (
     @SplitString nvarchar(max),  --源字符串
     @Separator nvarchar(10)=' ',  --分隔符号,默认为空格
     @index INT
 )
 RETURNS NVARCHAR(200)
 AS
 BEGIN
     DECLARE @CurrentIndex int;
     DECLARE @NextIndex int;
     DECLARE @ReturnText nvarchar(max);
     DECLARE  @SplitStringsTable TABLE  --输出的数据表
     (
         [id] int identity(1,1),
         [value] 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
     SET @ReturnText = (SELECT TOP 1 value FROM @SplitStringsTable WHERE id= @index+1)
     RETURN @ReturnText
 END
GO

       测试如下:

Declare @str varchar(10)='1.12.123'
SELECT dbo.F_SplitByIdex(@str,'.',0)  --中间的是分隔符可以是逗号、句号、分号等

       结果:


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值