Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment faire en sorte que to_number ignore les valeurs non numériques

En général dans les bases de données relationnelles, l'ordre d'évaluation n'est pas défini, il est donc possible que le select les fonctions sont appelées avant le where La clause filtre les données. Je sais que c'est le cas dans SQL Server. Ici est un message qui suggère que la même chose peut se produire dans Oracle.

Le case Cependant, l'instruction est en cascade, elle est donc évaluée dans l'ordre. Pour cette raison, je préfère :

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

Cela renverra NULL pour les valeurs qui ne sont pas des nombres.