sql >> Base de Datos >  >> RDS >> Oracle

Cómo hacer que to_number ignore valores no numéricos

En general en las bases de datos relacionales no se define el orden de evaluación, por lo que es posible que el select las funciones se llaman antes del where cláusula filtra los datos. Sé que este es el caso en SQL Server. Aquí es una publicación que sugiere que lo mismo puede suceder en Oracle.

El case Sin embargo, la declaración se produce en cascada, por lo que se evalúa en orden. Por esa razón, prefiero:

select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
        end)
from ABC;

Esto devolverá NULL para valores que no son números.