[firebase-br] Função NUMBER_ONLY

Marcos R. Weimer marcosweimer em gmail.com
Sex Nov 22 11:28:40 -03 2019


Cria a function:

CREATE OR ALTER FUNCTION only_numbers (
  avalue VARCHAR(100))
RETURNS VARCHAR(100)
AS
DECLARE VARIABLE I INTEGER;
  DECLARE VARIABLE R VARCHAR(100);
  DECLARE VARIABLE C CHAR(1);
BEGIN
  IF (AVALUE IS NULL) THEN
    RETURN NULL;

  R = '';
  I = 0;

  WHILE (I < CHARACTER_LENGTH(AVALUE)) DO
  BEGIN
    C = SUBSTRING(AVALUE FROM I + 1 FOR 1);

    IF (C SIMILAR TO '[[:DIGIT:]]') THEN
      R = R || C;

    I = I + 1;
  END

  RETURN R;
END

e no select....

select only_numbers(cnpj) from cliente



-=Ma®©oS=-
Marcos R. Weimer
Pessoas quietas têm as mentes mais barulhentas - Stephen Hawking
Viver significa ter algumas alegrias e muito sofrimento - Pepe Mujica





Em sex., 22 de nov. de 2019 às 11:23, Carlos H. Cantu <
listas em warmboot.com.br> escreveu:

> Vc pode usar a função interna replace pra remover os . e -
>
> []s
> Carlos H. Cantu
> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
>
> PG> Firebird 2.5.9
>
> PG> Quando necessitamos fazer uma pesquisa
> PG> semelhante a este exemplo:
>
> PG> SELECT...
> PG> FROM ...
> PG> WHERE NUMBER_ONLY(IE) = 123456789
>
>
> PG> No Banco a Inscrição Estadual pode estar com ou sem máscara:
> PG> 12345678-9
> PG> 123.456.789
>
> PG> Uma solução seria usar UDF.
>
> PG> Sem usar UDF tem alguma outra solução?
> PG> --
> PG> Paulo Esteves
>
>
> ______________________________________________
> 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