[firebase-br] apenas numeros

Sandro Souza escovadordebits em gmail.com
Sex Jul 17 09:53:32 -03 2009


Bom dia/tarde Reijânio.

Grande Reijânio, você poderia exemplificar como seria o formato desse seu
campo texto? Ou seja, seria apenas um valor numérico armazenado em um campo
varchar, ou poderia conter outros tipos de caracteres em qualquer parte do
texto?

Caso possa haver um ou mais caracteres que não sejam dígitos no texto,
deve-se coletar todos os dígitos do texto e retornar o valor inteiro
correspondente? Baseado em um exemplo, poderiamos criar a melhor solução
para o seu caso.

Para o caso de coletar todos os dígitos do texto e retornar o valor inteiro
correspondente, você poderia utilizar uma stored procedure como a seguinte:

SET TERM ^ ;
-- Extrai todos os dígitos do texto informado e retorna o valor inteiro
correspondente.
CREATE OR ALTER PROCEDURE EXTRAI_INTEIRO(
  -- Texto contendo os dígitos a serem extraídos.
  TEXTO VARCHAR(100)
)RETURNS(
  -- Valor inteiro extraído do texto.
  RESULTADO INTEGER
)AS
DECLARE VARIABLE INDICE INTEGER;
DECLARE VARIABLE CARACTER CHAR(1);
BEGIN
  -- Sem texto a ser processado?
  IF (TEXTO IS NULL) THEN
    -- Igualmente sem resultado.
    RESULTADO = NULL;
  ELSE
  BEGIN
    -- Inicializa o resultado.
    RESULTADO = 0;
    -- Inicialização do contador do laço.
    INDICE = 1;
    -- Laço de extração e atualização do resultado.
    WHILE (INDICE <= CHAR_LENGTH(TEXTO)) DO
    BEGIN
      -- Obtém o caracter atual.
      CARACTER = CAST(SUBSTRING(TEXTO FROM INDICE FOR 1) AS CHAR(1));
      -- É um dígito?
      IF (CARACTER BETWEEN '0' AND '9') THEN
        -- Atualiza o resultado.
        RESULTADO = RESULTADO * 10 + CAST(CARACTER AS INTEGER);
      -- Próximo caracter.
      INDICE = INDICE + 1;
    END -- WHILE
  END -- ELSE
  -- Retorna o resultado.
  SUSPEND;
END^
SET TERM ; ^

Depois é só testar:

SELECT ..., (SELECT RESULTADO FROM EXTRAI_INTEIRO(MEU_CAMPO_TEXTO))AS
VALOR_INTEIRO, ...

Espero ter ajudado mais que atrapalhado. :D

2009/7/8 Reijanio Nunes Ribeiro <rnribeiro em gmail.com>

> boa tarde a todos estou com uma pequena duvida como extrair apenas numeros
> de um campo que contem numeros e letras estou fazendo isso pra que caso
> precise criar um auto numeração não de erro ai inserir um numero novo pois
> retornaria apenas um campo numerico
>
> desde ja agradeço
> ______________________________________________
> 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://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista