如何在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