Sqlserver存储过程、函数中 字符串分割并提取第n个值

Sqlserver存储过程、函数中 字符串分割并提取第n个值


sqlserver 存储过程中或函数中根据某个特定符号截取字符串,并获取指定顺序的值,废话不多说直接上代码。@Str 为字符串,@s固定分隔符,@i 获取分割后第几个数。

ALTER FUNCTION [dbo].[Fun_split]
(
@Str NVARCHAR(MAX),
@s NVARCHAR(2),
@i int
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
  
	DECLARE @Start INT;
    DECLARE @End INT;
	DECLARE @ttt int = 1;
	DECLARE @sp NVARCHAR(MAX);
	
	set @Start=1;
	set @End=PATINDEX('%'+@s+'%',@Str);
	if PATINDEX('%'+@s,@Str)=0
	BEGIN
	   set @Str=@Str+@s;
	END
	while (@ttt <=@i and @End>0)
	BEGIN
	
	        set @sp=SUBSTRING(@Str, @Start, @End-1);
			set @ttt=@ttt+1;
			set @Start= @Start + @End;
			set @End=PATINDEX('%'+@s+'%',substring(@Str,@Start,LEN(@Str) - @Start+1));
			
	end	
	if @ttt-1<>@i 
	BEGIN
	   set @sp=null;
	end
	RETURN @sp;
END

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值