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

COALESCE () Oracle में फ़ंक्शन

Oracle डाटाबेस में, COALESCE() फ़ंक्शन पहली गैर-शून्य अभिव्यक्ति अभिव्यक्ति सूची देता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

COALESCE(expr [, expr ]...)

कम से कम दो भाव पास होने चाहिए।

उदाहरण

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:

SELECT COALESCE(null, 7)
FROM DUAL;

परिणाम:

7

यहां कुछ और उदाहरण दिए गए हैं:

SET NULL 'null';
SELECT
    COALESCE(null, null, 1, 2, 3) AS "r1",
    COALESCE(1, null, 2, 3) AS "r2",
    COALESCE(null, 3, 2, 1) AS "r3",
    COALESCE(1, 2, 3, null) AS "r4",
    COALESCE(null, null) AS "r5"
FROM DUAL;

परिणाम:

   r1    r2    r3    r4      r5 
_____ _____ _____ _____ _______ 
    1     1     3     1 null   

हम देख सकते हैं कि COALESCE() रिटर्न null जब सभी तर्क शून्य हों।

पहली पंक्ति के संबंध में SET NULL 'null'; , मैंने इसे जोड़ा ताकि मेरा SQLcl सत्र null लौटाए जब भी परिणाम शून्य होता है।

डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null . खाली स्थान लौटाते हैं SQL SELECT . के परिणामस्वरूप होता है बयान।

हालांकि, आप SET NULL . का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null लौटाया जाना चाहिए।

डेटाबेस उदाहरण

मान लीजिए कि हम निम्नलिखित क्वेरी चलाते हैं:

SET NULL 'null';
SELECT 
    LOCATION_ID,
    STATE_PROVINCE
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;

परिणाम:

   LOCATION_ID      STATE_PROVINCE 
______________ ___________________ 
          1000 null                
          1100 null                
          1200 Tokyo Prefecture    
          1300 null                
          1400 Texas               
          1500 California          

हम देख सकते हैं कि कई पंक्तियाँ null हैं STATE_PROVINCE . में कॉलम।

यहाँ फिर से प्रश्न है, इस समय को छोड़कर हम COALESCE() . का उपयोग करते हैं STATE_PROVINCE . के विरुद्ध कॉलम:

SELECT 
    LOCATION_ID,
    COALESCE(STATE_PROVINCE, 'N/A')
FROM LOCATIONS
ORDER BY LOCATION_ID ASC
FETCH FIRST 6 ROWS ONLY;

परिणाम:

   LOCATION_ID    COALESCE(STATE_PROVINCE,'N/A') 
______________ _________________________________ 
          1000 N/A                               
          1100 N/A                               
          1200 Tokyo Prefecture                  
          1300 N/A                               
          1400 Texas                             
          1500 California                        

इसलिए हमने COALESCE() . का इस्तेमाल किया N/A return लौटाने के लिए जब भी कोई शून्य मान होता है।

COALESCE() बनाम CASE

निम्नलिखित:

COALESCE(expr1, expr2)

इसके बराबर है:

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

अवैध तर्क गणना

कोई तर्क पारित किए बिना फ़ंक्शन को कॉल करने से त्रुटि होती है:

SELECT COALESCE()
FROM DUAL;

परिणाम:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

  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. Oracle डेटाबेस TLS1.2 / SSL कनेक्शन JDBC थिन और JKS का उपयोग कर रहा है

  3. जावा ओरेकल अपवाद - एक सूची में अभिव्यक्तियों की अधिकतम संख्या 1000 . है

  4. आप किसी प्रश्न की व्याख्या योजना की व्याख्या कैसे करते हैं?

  5. विंडोज़ में फ़ाइल में ऑरैकल एसक्यूएल परिणाम कैसे आउटपुट करें?