[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