Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como fazer to_number ignorar valores não numéricos


Em geral em bancos de dados relacionais, a ordem de avaliação não é definida, então é possível que o select funções são chamadas antes do where cláusula filtra os dados. Eu sei que este é o caso no SQL Server. Aqui é um post que sugere que o mesmo pode acontecer no Oracle.

O case A instrução, no entanto, está em cascata, portanto, é avaliada em ordem. Por isso prefiro:
select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
        end)
from ABC;

Isso retornará NULL para valores que não são números.