Generelt i relationelle databaser er rækkefølgen for evaluering ikke defineret, så det er muligt, at select
funktioner kaldes før where
klausul filtrerer dataene. Jeg ved, at dette er tilfældet i SQL Server. Her er et indlæg, der antyder, at det samme kan ske i Oracle.
case
Udsagnet falder dog sammen, så det vurderes i rækkefølge. Af den grund foretrækker jeg:
select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
end)
from ABC;
Dette vil returnere NULL
for værdier, der ikke er tal.