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]