TAGs: Oracle, SQL, PL/SQL, isNumber, isNumeric
Não existe uma função para testar se o conteúdo de uma string representa um valor numérico, mas existe um workaround.
LENGTH(TRIM(TRANSLATE(string1, ' +-.0123456789', ' ')))
Essa função vai retornar null se o valor for numérico, assim você pode testar com "is null" em uma cláusula where. Por exemplo:
select * from tabela where LENGTH(TRIM(TRANSLATE(campoString, ' +-.0123456789', ' '))) is null
A função translate troca os dígitos por espaços ' '. A função trim remove os espaços. A função length retorna o tamanho da string. Se a string não for numérica, o tamanho será positivo, caso seja numérica, length retornará null.
Fonte: http://www.techonthenet.com/oracle/questions/isnumeric.php