Obecně v relačních databázích není definováno pořadí hodnocení, takže je možné, že select
funkce jsou volány před where
klauzule filtruje data. Vím, že je to případ SQL Serveru. Zde je příspěvek, který naznačuje, že totéž se může stát v Oracle.
case
příkaz však kaskáduje, takže je vyhodnocován v pořadí. Z toho důvodu preferuji:
select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
end)
from ABC;
To vrátí NULL
pro hodnoty, které nejsou čísly.