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.