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:
Se o firebird tivesse a função Pos do delphi:
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:
No firebird declarei assim:
Só que nao esta funcionando, esta sempre retornando 0 (zero). Estou testando da seguinte maneira no IbExpert:
Alguem sabe o que tem de errado com tudo isso que eu fiz?
Fico no aguardo.
Feliz 2007 para todos!!!!
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)