Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

NVL और Coalesce के बीच Oracle अंतर

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 उत्पन्न नहीं होते हैं और क्वेरी तत्काल होती है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल जबकि लूप उदाहरण

  2. सी #:ऑब्जेक्ट को डीबीएनयूएल से अन्य प्रकारों में नहीं डाला जा सकता है

  3. Oracle का उपयोग करके INTO का चयन करें

  4. फाइन-ट्यूनिंग Oracle DG40DBC

  5. Oracle डायनेमिक पिवोटिंग