Situatie
M-am intalnit deseori cu problema de a cauta intr-un string sau o coloana de tip varchar a doua sau a treia recurenta a unui alt string.
Pentru aceasta situatie am facut o functie care cauta intr-un string (sau o coloana de tip varchar dintr-o tabela) a n-a apartie a unui sir de caractere.
Functia are 3 parametrii:
– un parametru de tip varchar ce reprezinta stringul cautat
– un parametru de tip varchar ce reprezinta stringul (sau coloana din tabela) in care se face cautarea
– un parametru de tip int ce reprezinta a cata apartiei a primului parametru in cel de-al doilea parametru este cautata
Solutie
CREATE FUNCTION BD_CautareNAparitie
( @Sursa varchar(8000), @Caut varchar(8000), @NrAparitie int )
RETURNS int
as
begin
declare @pozitie int, @i int, @buffer int
set @pozitie = CHARINDEX(@Sursa, @Caut)
set @i = 1
if @NrAparitie = 1 set @buffer = @pozitie
else
begin
while (@i < @NrAparitie)
begin
select @buffer = CHARINDEX(@Sursa, @Caut, @pozitie + 1)
set @i = @i + 1
set @pozitie = @buffer
end
end
RETURN(@buffer)
end
Leave A Comment?