सामान्य तौर पर संबंधपरक डेटाबेस में, मूल्यांकन का क्रम परिभाषित नहीं होता है, इसलिए यह संभव है कि select
फ़ंक्शन को where
. से पहले बुलाया जाता है खंड डेटा को फ़िल्टर करता है। मुझे पता है कि SQL सर्वर में यह मामला है। यहांए> एक पोस्ट है जो बताती है कि Oracle में भी ऐसा ही हो सकता है।
case
बयान, हालांकि, कैस्केड करता है, इसलिए इसका मूल्यांकन क्रम में किया जाता है। इस कारण से, मुझे पसंद है:
select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
end)
from ABC;
यह NULL
लौटाएगा उन मानों के लिए जो संख्याएँ नहीं हैं।