Acho que é isso que vc precisa:

Create Or Replace Function TO_NUMBER_CHAR (strValor VARCHAR2 , 
     nExtrairZerosEsquerda NUMBER DEFAULT 1) 
Return VARCHAR2
IS

   -- Objetivo: Extrair caracteres não numéricos de uma string
   --           Extrair os zeros a esquerda de uma string

   nTamanho NUMBER;
   nPosicao NUMBER;
   strReturn VARCHAR2(255);
   strValorNumerico VARCHAR2(255);
   

   Begin

 strValorNumerico := NVL(strValor, ' ');
 nTamanho := LENGTH(strValorNumerico);

 -- Trocar caracteres não numéricos por NULL
 For nPosicao IN 1..nTamanho LOOP
     If ASCII(SUBSTR(strValorNumerico, nPosicao, 1)) BETWEEN 48 AND 57 Then
        strReturn := strReturn || SUBSTR(strValorNumerico, nPosicao, 1);
     End If;
 End Loop;

 -- Retirar os zeros da esquerda
 If nExtrairZerosEsquerda > 0 Then
      For nPosicao IN 1..nTamanho LOOP
        If SUBSTR(strReturn, 1 , 1) = '0' Then
           strReturn := SUBSTR(strReturn, 2 , LENGTH(strReturn) - 1);
        Else
           Return strReturn;
        End If;
    End Loop;
 End If;

 Return strReturn;

   End;
/


se quiser fazer o contrario, ou seja, eliminar os numeros de uma string:


Create Or Replace Function TO_CHAR_NUMBER (strValor VARCHAR2 ) 
Return VARCHAR2
IS

   -- Objetivo: Extrair caracteres numéricos de uma string

   nTamanho NUMBER;
   nPosicao NUMBER;
   strReturn VARCHAR2(255);
   strValorNumerico VARCHAR2(255);
   

   Begin

 strValorNumerico := NVL(strValor, ' ');
 nTamanho := LENGTH(strValorNumerico);

 -- Trocar caracteres numéricos por NULL
 For nPosicao IN 1..nTamanho LOOP
     If ASCII(SUBSTR(strValorNumerico, nPosicao, 1)) NOT BETWEEN 48 AND 57 
   And SUBSTR(strValorNumerico, nPosicao, 1) NOT IN ('-','/','.','(',')') Then
        strReturn := strReturn || SUBSTR(strValorNumerico, nPosicao, 1);
     End If;
 End Loop;

 strReturn := LTRIM(RTRIM(strReturn));

 Return strReturn;

   End;
/



  ----- Original Message ----- 
  From: Leonardo Santos da Mata 
  To: oracle_br@yahoogrupos.com.br ; usuarios_ora...@yahoogrupos.com.br ; 
gpora...@yahoogrupos.com.br 
  Sent: Thursday, April 15, 2010 4:31 PM
  Subject: [oracle_br] retirar os caracteres numéricos de string


    
  ola pessoal,

  Eu estou com uma dificuldade aqui e gostaria de ajuda?

  eu tenho uma coluna que string em uma determinada tabela.

  porém tem caracteres alpha numéricos cadastrados nela.
  Porém é sem padrão nenhum, eu gostaria de saber como faço para extrair
  apenas os caracteres numéricos com uma consulta?

  Obrigado

  -- 
  Att,

  Leonardo Santos da Mata

  [As partes desta mensagem que não continham texto foram removidas]



  

[As partes desta mensagem que não continham texto foram removidas]

Responder a