Nói chung trong cơ sở dữ liệu quan hệ, thứ tự đánh giá không được xác định, vì vậy có thể select
các hàm được gọi trước where
mệnh đề lọc dữ liệu. Tôi biết đây là trường hợp của SQL Server. Tại đây là một bài đăng gợi ý rằng điều tương tự cũng có thể xảy ra trong Oracle.
case
tuy nhiên, câu lệnh thực hiện theo tầng, vì vậy nó được đánh giá theo thứ tự. Vì lý do đó, tôi thích:
select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
end)
from ABC;
Điều này sẽ trả về NULL
cho các giá trị không phải là số.