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

  • Post author:
  • Post category:其他


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



版权声明:本文为qq_24686507原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。