如何在SQL Server中返回字符串中第n个元素的索引。比如我有字符串:A,B,C,d,E 现在我想收到的所有元素,第三昏迷之前,所以A,B,C。为了做到这一点,我需要有第三次昏迷指数。 Charindex不适合在这里,因为我不能通过昏迷的数量,为此我想索引。有没有可以做到的内置函数?使用tsql返回字符串中第n个元素的索引
更新,@Andriy M.
嘿,链接你指出我也很有用。下面,我已经修改了显示SQL一点得到我想要的东西:
CREATE FUNCTION [dbo].[nthindexsub](@String varchar(8000), @Delimiter char(1), @DelimitersCount int)
returns varchar(8000)
as
begin
declare @Substring varchar(8000)
declare @temptable TABLE (itemindex int identity(1,1), items varchar(8000))
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return @Substring
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
select @Substring = COALESCE(@Substring + ',', '') + items from @temptable where itemindex <= @DelimitersCount
return @Substring;
end
用法:
select dbo.nthindexsub('a,b,c,d,e', ',', 3)
结果是:A,B,C
类似的问题已经解决了这里:http://stackoverflow.com/问题/ 4911153 /按索引获取特定部分的字符串 – 2011-02-07 13:52:22