Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie man to_number dazu bringt, nicht-numerische Werte zu ignorieren

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.