--根据索引idx值获取格式串中第idx个值 如数据'11,12,13,14,15,16'
方法:格式串+分隔符;@str='11,12,13,14,15,16'+','
select dbo.GetStrByindex('11,12,13,14,15,16,', ',', 3); -- 13
create function [dbo].[GetStrByindex](@str varchar(8000),@split varchar(10),@idx int)
--@str:待查找字符串
returns varchar(100)
as
begin
declare @inx int
set @inx=0
WHILE(CHARINDEX(@split,@str)<>0)
begin
SET @INX=@INX+1
if @inx=@idx
--第一个@split之前的字符串
return SUBSTRING(@str,1,CHARINDEX(@split,@str)-1)
--将第一个@split后面的字符串重新赋给@str
SET @str=STUFF(@str,1,CHARINDEX(@split,@str),'')
end
return '';
end
GO
此过程可能在数据维护时,偶尔会遇到。