COALESCE अधिक आधुनिक कार्य है जो ANSI-92 . का एक हिस्सा है मानक।
NVL Oracle है विशिष्ट, इसे 80 . में पेश किया गया था इससे पहले कोई मानक थे।
दो मानों के मामले में, वे पर्यायवाची हैं।
हालांकि, उन्हें अलग तरह से लागू किया जाता है।
NVL हमेशा दोनों तर्कों का मूल्यांकन करता है, जबकि COALESCE जब भी यह पहला गैर-NULL मिलता है तो आमतौर पर मूल्यांकन बंद कर देता है (कुछ अपवाद हैं, जैसे अनुक्रम NEXTVAL ):
SELECT SUM(val)
FROM (
SELECT NVL(1, LENGTH(RAWTOHEX(SYS_GUID()))) AS val
FROM dual
CONNECT BY
level <= 10000
)
यह लगभग 0.5 . के लिए चलता है सेकंड, क्योंकि यह SYS_GUID() . उत्पन्न करता है 1 . के बावजूद NULL not नहीं होना ।
SELECT SUM(val)
FROM (
SELECT COALESCE(1, LENGTH(RAWTOHEX(SYS_GUID()))) AS val
FROM dual
CONNECT BY
level <= 10000
)
यह समझता है कि 1 NULL नहीं है और दूसरे तर्क का मूल्यांकन नहीं करता है।
SYS_GUID उत्पन्न नहीं होते हैं और क्वेरी तत्काल होती है।