spróbuj dodać funkcję
/*
Example:
SELECT dbo.CHARINDEX2('a', 'abbabba', 3)
returns the location of the third occurrence of 'a'
which is 7
*/
CREATE FUNCTION CHARINDEX2
(
@TargetStr varchar(8000),
@SearchedStr varchar(8000),
@Occurrence int
)
RETURNS int
AS
BEGIN
DECLARE @pos INT, @counter INT, @ret INT
set @pos = CHARINDEX(@TargetStr, @SearchedStr)
set @counter = 1
if @Occurrence = 1 set @ret = @pos
else
begin
while (@counter < @Occurrence)
begin
select @ret = CHARINDEX(@TargetStr, @SearchedStr, @pos + 1)
set @counter = @counter + 1
set @pos = @ret
end
end
RETURN(@ret)
end
następnie odwołać funkcję jako takiego ...
SELECT SUBSTRING('/one/two/three/whatever/testing', 0, dbo.CHARINDEX2('/', '/one/two/three/whatever/testing', 3))
Wyjazd artykuł here dla lepszego wyglądu :)
bardzo ładne .. wszystko, co możemy zrobić, to działa z tym ciągiem zbyt "/ jeden/dwa/trzy% 20rest/cokolwiek/testowanie .. dziękuję. – o365spo
@cyberpine, nie jestem pewien co masz na myśli. O ile mogę powiedzieć, działa poprawnie z ciągiem w twoim komentarzu: http://data.stackexchange.com/stackoverflow/query/60986/find-3rd-instance-of –