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

Flavio Divino flaviodivino em gmail.com
Seg Nov 7 12:19:23 -03 2016


Veja se essa procedure te ajude.

SET TERM ^ ;

create or alter procedure PEGANUMSTR (
    STR varchar(20))
returns (
    NUMSTR varchar(20),
    TAMSTR_COMPLETO integer,
    TAMSTR_NUM integer)
as
declare variable J integer;
declare variable C char(1);
begin
  tamstr_completo = strlen(str);
  if ((str is null) or (str = '') or (tamstr_completo = 0)) then
  begin
    numstr = null;
  end
  else
  begin
    numstr = '';
    tamstr_num = 0;
    j = 1;
    while (J <= tamstr_completo)do
    begin
      c = substrlen(str, j, 1);
      if    ((c = '0') or (c = '1') or (c = '2') or (c = '3') or (c = '4')
          or (c = '5') or (c = '6') or (c = '7') or (c = '8') or (c = '9'))
then
      begin
        numstr = numstr || c;
        tamstr_num = tamstr_num + 1;
      end
      j = j + 1;
    end
    if (numstr = '') then
      numstr = null;
    suspend;
  end
end^

SET TERM ; ^

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE PEGANUMSTR TO SYSDBA;

Em 7 de novembro de 2016 12:03, Gladiston Santana <gladiston em vidy.com.br>
escreveu:

> 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/
> pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista