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 版权协议,转载请附上原文出处链接和本声明。