Im Allgemeinen ist in relationalen Datenbanken die Reihenfolge der Auswertung nicht festgelegt, sodass es vorkommen kann, dass der select
Funktionen werden vor dem where
aufgerufen -Klausel filtert die Daten. Ich weiß, dass dies bei SQL Server der Fall ist. Hier ist ein Beitrag, der darauf hindeutet, dass das Gleiche in Oracle passieren kann.
Der case
Die Anweisung kaskadiert jedoch, sodass sie der Reihe nach ausgewertet wird. Aus diesem Grund bevorzuge ich:
select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
end)
from ABC;
Dies gibt NULL
zurück für Werte, die keine Zahlen sind.