Cautare a n-a aparitie intr-un string

Configurare noua (How To)

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

Tip solutie

Permanent

Voteaza

(32 din 66 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?