[firebase-br] Função DIGITS(), alguma maneira de contornar sua ausencia?

Mário Reis mariodosreyx em gmail.com
Sáb Dez 10 17:36:14 -03 2016


Boa tarde
Há muito que não via ninguém da lista por aqui !
Com muita pena minha ouvi que tinha fechado de vez! Ainda bem que não é
assim.
Bom não sei que versão do FB estão a usar mas se for a FB3.0 ou maior dá
para fazer uma
função (SqlFunction) com o mesmo código usando uma variavel Boolean.
Mas também pode baixar da NET a tbudf.dll e usar, assim:
Select campo1,campo2, udf_isdigit(campo_telefone) from tabela where
condição.
Não sei qual o mais rápido, mas o FB parece-me bastante rápido na chamada
às UDF externas.
Os estrangulamentos/gargalos, poderão existar no desenho das funções da
UDFs do que no desempenho  do FB a chamar essas funções
Espero ter ajudado mais do que atrapalhado
Saudaç

Com os meus melhores cumprimentos
Mário Agostinho Reis

Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.

2016-12-09 10:29 GMT-01:00 Firebase <firebase em dominioinf.com.br>:

> Bom dia, Contornei esse problema criando uma procedure:
>
> CREATE PROCEDURE PROC_DIGITOS (
>  TEXTO VARCHAR(100)
> )
> RETURNS (
>  RETORNO VARCHAR(100)
> )
> AS
> DECLARE VARIABLE CH CHAR(1);
> BEGIN
> Retorno = '';
> WHILE (Texto IS NOT NULL AND Texto <> '') DO
> BEGIN
> Ch = SUBSTRING(Texto FROM 1 FOR 1);
> IF (Ch >= '0' AND Ch <= '9') THEN
> Retorno = Retorno || Ch;
> Texto = SUBSTRING(Texto FROM 2 FOR 100);
> END
> SUSPEND;
> END
> ;
>
> E executa dessa forma:
> SELECT C.NOME, C.ENDERECO, (select * from PROC_DIGITOS(C.TELEFONE)) AS
> TELEFONE FROM CLIENTES C
>
> Não sei se é bem isso que vc precisa, mas espero ter ajudado.
>
> Grato
>
> Rodrigo
>
> -----Mensagem Original----- From: Gladiston Santana
> Sent: Monday, November 07, 2016 12:03 PM
> To: FireBase
> Subject: [firebase-br] Função DIGITS(), alguma maneira de contornar sua
> ausencia?
>
> Olá pessoal,
>
> Estou importando dados de um outro banco de dados, e para evitar
> duplicações tenho que conferir se um telefone já não foi importado antes. O
> problema é que a forma como o telefone foi armazenado permite duplicações
> como 11-555-9090, (11)555-9090 e 115559090 então precisaria usar uma função
> chamada DIGITS que existe em outros bancos de dados que retorna de uma
> string apenas os digitos numericos e então importar os que não existem ou
> excluir os que são repetidos.
>
> O Firebird não possui tal função, ou talvez ela exista de outra forma,
> alguém aqui lista já precisou disso e conseguiu resolver essa questão?
>
> Se não houver, vou tem que pensar numa procedure e quebrar a cabeça por
> algo que parece ser simples.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/pes
> quisa_lista.html
>
> ---
> Este email foi escaneado pelo Avast antivírus.
> https://www.avast.com/antivirus
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/pes
> quisa_lista.html
>



Mais detalhes sobre a lista de discussão lista