Over het algemeen is in relationele databases de volgorde van evaluatie niet gedefinieerd, dus het is mogelijk dat de select
functies worden aangeroepen vóór de where
clausule filtert de gegevens. Ik weet dat dit het geval is in SQL Server. Hier is een bericht dat suggereert dat hetzelfde kan gebeuren in Oracle.
De case
statement loopt echter in cascade, dus het wordt in volgorde geëvalueerd. Om die reden geef ik de voorkeur aan:
select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
end)
from ABC;
Dit retourneert NULL
voor waarden die geen getallen zijn.