[firebase-br] Localizar caracter em uma string

Jeferson Oliveira jefersonfoliveira em gmail.com
Qui Out 26 18:53:58 -03 2006


Rapaz que coincidência!

Logo após postar a mensagem sobre a TbUDF, precisei utilizar o recurso
de identificar a posição de um string em outro.
Como evito utilizar UDFs e não quero distribuir mais um arquivo
(tbudf.dll) com meu sistema, criei uma SP para isso.
Contraditoriamente, talvez, na SP utilizo duas UDFs (strlen e
substrlen), por comodidade e por já ser completamente dependente
dessas duas. De toda forma representam um mal menor, já que os módulos
que as contém (ib_udf) já faz parte da instalação padrão do Firebird.

Segue o código:

create procedure SP_Pos_SubStr (
    SubStr varchar(64),
    Str varchar(2048))
returns (
    POS integer)
as
declare variable I integer;
begin
  Pos = 0;
  i = 1;
  while (i <= (StrLen(:Str) - StrLen(:SubStr) + 1)) do
  begin
    if (SubStrLen(:Str, i, StrLen(:SubStr)) = :SubStr) then
    begin
      Pos = i;
      break;
    end
    i = i + 1;
  end
  suspend;
end


Abraço!
Jeferson Oliveira




Mais detalhes sobre a lista de discussão lista