REVELAR

Fórum UDF para posição de substring na string #57554

30/12/2006

0

Pessoal!
Preciso fazer um consulta em um campo do tipo varchar que armazena apenas endereço de email, eu precisava pegar tudo que estiver antes do arroba ´@´
Algo mais ou menos assim:

select substring( EMAIL from 1 for (até o ´@´) ) from USUARIO


Se o firebird tivesse a função Pos do delphi:

select substring( EMAIL from 1 for Pos(´@´, EMAIL) ) from USUARIO


Seria facil resolver o problema. Entao pensei em fazer uma UDF para me retornar a posição do ´@´ para que eu possa informar a função Substring
Estou fazendo assim:

Código da DLL:
library UdfPos;

uses
  SysUtils, Classes;

{$R *.res}

function RetornaPos( pTexto : WideString ) : Integer; StdCall;
begin
  Result := Pos( ´@´, pTexto );
end;

Exports
  RetornaPos;

begin
end.



No firebird declarei assim:
DECLARE EXTERNAL FUNCTION POSICAO_CARACTERE
    VARCHAR(100)
RETURNS INTEGER BY VALUE
ENTRY_POINT ´RetornaPos´ MODULE_NAME ´UdfPos.dll´



Só que nao esta funcionando, esta sempre retornando 0 (zero). Estou testando da seguinte maneira no IbExpert:
select posicao_caractere(´email@teste.com.br´) from rdb$database



Alguem sabe o que tem de errado com tudo isso que eu fiz?

Fico no aguardo.


Feliz 2007 para todos!!!!


Mmoreira

Mmoreira

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar