Secara umum dalam basis data relasional, urutan evaluasi tidak ditentukan, sehingga memungkinkan select
fungsi dipanggil sebelum where
klausa menyaring data. Saya tahu ini adalah kasus di SQL Server. Di sini adalah postingan yang menunjukkan bahwa hal yang sama dapat terjadi di Oracle.
case
pernyataan, bagaimanapun, tidak kaskade, sehingga dievaluasi secara berurutan. Karena itu, saya lebih suka:
select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
end)
from ABC;
Ini akan mengembalikan NULL
untuk nilai yang bukan angka.