Oracle Database
पूर्ण मूल्यों को संभालना
खोज…
परिचय
एक कॉलम 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