खोज…


परिचय

एक कॉलम NULL होता है, जब उस कॉलम के डेटा प्रकार की परवाह किए बिना उसका कोई मूल्य नहीं होता है। इस सिंटैक्स a = NULL का उपयोग करके NULL की तुलना कभी नहीं की जानी चाहिए क्योंकि परिणाम UNKNOWN होगा। इसके बजाय a IS NULL या a IS NOT NULL शर्तों का उपयोग करें। NULL, NULL के बराबर नहीं है। दो अभिव्यक्तियों की तुलना करने के लिए जहां अशक्त हो सकता है, नीचे वर्णित कार्यों में से एक का उपयोग करें। यदि कोई एक ऑपरेंड NULL है, तो कॉन्टैक्टेशन को छोड़कर सभी ऑपरेटर NULL को वापस कर देते हैं। उदाहरण के लिए 3 * NULL + 5 का परिणाम शून्य है।

टिप्पणियों

NULL किसी PRIMARY KEY या NOT NULL बाधा से प्रतिबंधित कॉलम में दिखाई नहीं दे सकता है। (अपवाद NOVALIDATE खंड के साथ एक नया अवरोध है)

किसी भी डेटा प्रकार के कॉलम में NULLs हो सकता है

SELECT 1 NUM_COLUMN, 'foo' VARCHAR2_COLUMN from DUAL
UNION ALL
SELECT NULL, NULL from DUAL;
NUM_COLUMN VARCHAR2_COLUMN
1 foo
(शून्य) (शून्य)

खाली तार NULL हैं

SELECT 1 a, '' b from DUAL;
बी
1 (शून्य)

NULL युक्त संचालन, NULL हैं, सिवाय संक्षेपण के

SELECT 3 * NULL + 5, 'Hello ' || NULL || 'world'   from DUAL;
3 * शून्य + 5 'हैलो' || शून्य || 'वर्ल्ड'
(शून्य) नमस्ते दुनिया

एनएलएल शून्य मान को बदलने के लिए

SELECT a column_with_null, NVL(a, 'N/A') column_without_null FROM
  (SELECT NULL a FROM DUAL);
COLUMN_WITH_NULL COLUMN_WITHOUT_NULL
(शून्य) एन / ए

एनवीएल दो मूल्यों की तुलना करने के लिए उपयोगी है जिसमें NULLs शामिल हो सकते हैं:

SELECT
    CASE WHEN a = b THEN 1 WHEN a <> b THEN 0 else -1 END comparison_without_nvl,
    CASE WHEN NVL(a, -1) = NVL(b, -1) THEN 1 WHEN NVL(a, -1) <> NVL(b, -1) THEN 0 else -1 END comparison_with_nvl
  FROM
    (select null a, 3 b FROM DUAL
     UNION ALL
     SELECT NULL, NULL FROM DUAL);
COMPARISON_WITHOUT_NVL COMPARISON_WITH_NVL
-1 0
-1 1

यदि मान शून्य है या नहीं, तो एक अलग परिणाम प्राप्त करने के लिए NVL2

यदि पहला पैरामीटर NULL नहीं है, तो NVL2 दूसरा पैरामीटर लौटाएगा। अन्यथा यह तीसरे को लौटा देगा।

SELECT NVL2(null, 'Foo', 'Bar'), NVL2(5, 'Foo', 'Bar') FROM DUAL;
NVL2 (शून्य, 'FOO', 'बार') NVL2 (5, 'FOO', 'बार')
बार फू

पहला गैर-पूर्ण मान वापस करने के लिए COALESCE

SELECT COALESCE(a, b, c, d, 5) FROM 
    (SELECT NULL A, NULL b, NULL c, 4 d FROM DUAL);
COALESCE (ए, बी, सी, डी, 5)
4

कुछ मामलों में, दो मापदंडों के साथ COALESCE का उपयोग NVL का उपयोग करने से तेज हो सकता है जब दूसरा पैरामीटर एक स्थिर नहीं है। एनवीएल हमेशा दोनों मापदंडों का मूल्यांकन करेगा। COALESCE पहले गैर-पूर्ण मूल्य पर रुकेगा, जहां उसका सामना होगा। इसका अर्थ है कि यदि पहला मान गैर-पूर्ण है, तो कोडलेस तेजी से होगा।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow