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"