MySQL में, कभी-कभी आप नहीं चाहते कि NULL मान NULL . के रूप में लौटाए जाएं . कभी-कभी आप चाहते हैं कि NULL मान किसी भिन्न मान के साथ लौटाए जाएं, जैसे "N/A", "लागू नहीं", "कोई नहीं", या यहां तक कि खाली स्ट्रिंग ""।
सौभाग्य से MySQL में ऐसा करने के कई तरीके हैं।
ये हैं चार:
- द
IFNULL()समारोह - द
COALESCE()समारोह - द
IF()फ़ंक्शनIS NULL. के साथ संयुक्त है (याIS NOT NULL) ऑपरेटर CASEअभिव्यक्ति के साथ संयुक्तIS NULL(याIS NOT NULL) ऑपरेटर
इन विकल्पों के उदाहरण नीचे हैं।
नमूना डेटा
सबसे पहले, आइए कुछ नमूना डेटा लें:
USE Solutions; SELECT TaskCode From Tasks;
परिणाम:
+----------+ | TaskCode | +----------+ | gar123 | | NULL | | NULL | | dog456 | | NULL | | cat789 | +----------+
तो हमारे पास तीन NULL मान और तीन गैर-शून्य मान हैं।
IFNULL() फ़ंक्शन
इसके नाम को देखते हुए, यह MySQL में NULL मानों को बदलने के लिए शायद सबसे स्पष्ट विकल्प है। यह फ़ंक्शन मूल रूप से ISNULL() . के बराबर है SQL सर्वर में।
IFNULL() फ़ंक्शन आपको दो तर्क प्रदान करने की अनुमति देता है। पहला तर्क तभी लौटाया जाता है जब वह NULL न हो। यदि यह NULL है, तो इसके बजाय दूसरा तर्क दिया जाता है।
यहां IFNULL() का उपयोग करने का एक उदाहरण दिया गया है हमारे नमूना डेटा सेट के विरुद्ध:
SELECT IFNULL(TaskCode, 'N/A') AS Result FROM Tasks;
परिणाम:
+--------+ | Result | +--------+ | gar123 | | N/A | | N/A | | dog456 | | N/A | | cat789 | +--------+
यहां, हमने केवल NULL मानों को N/A . से बदल दिया है ।
द COALESCE() फंक्शन
यह फ़ंक्शन IFNULL() . के समान है समारोह, लेकिन थोड़ा अलग। यह फ़ंक्शन ANSI SQL मानक का पालन करता है, और इसे विभिन्न RDBMS में व्यापक रूप से तैनात किया जाता है।
जिस तरह से यह काम करता है, आप जितने चाहें उतने तर्क प्रदान करते हैं। COALESCE() फिर पहला गैर-NULL लौटाएगा सूची में मान, या NULL यदि कोई गैर-NULL नहीं है मान।
इस तरह:
SELECT COALESCE(TaskCode, 'N/A') AS Result FROM Tasks;
परिणाम:
+--------+ | Result | +--------+ | gar123 | | N/A | | N/A | | dog456 | | N/A | | cat789 | +--------+
इसलिए हमें पहले जैसा ही परिणाम मिलता है।
हालांकि, इस फ़ंक्शन के साथ अंतर यह है कि, जैसा कि बताया गया है, आप तर्कों की एक सूची प्रदान कर सकते हैं। COALESCE() फ़ंक्शन जो भी पहला गैर-शून्य मान लेगा।
इसलिए उदाहरण के लिए, हम NULL add जोड़ सकते हैं पहले तर्क के रूप में और None place रखें N/A . से पहले और देखो क्या होता है:
SELECT COALESCE(NULL, TaskCode, 'None', 'N/A') AS Result FROM Tasks;
परिणाम:
+--------+ | Result | +--------+ | gar123 | | None | | None | | dog456 | | None | | cat789 | +--------+
इसने पहले NULL . को छोड़ दिया जैसा अपेक्षित था, तब इसने TaskCode . में किसी भी NULL मान को छोड़ दिया कॉलम, None . पर बसने से पहले . N/A इस मामले में value का उपयोग नहीं किया गया क्योंकि None पहले आया और यह एक गैर-शून्य मान है।
IF() फ़ंक्शन IS NULL/IS NOT NULL के साथ संयुक्त है
IS NULL और IS NOT NULL ऑपरेटर आपको NULL मानों के परीक्षण की अनुमति देते हैं, और परिणाम के आधार पर एक अलग मान प्रस्तुत करते हैं।
हम इन ऑपरेटरों का उपयोग IF() . के अंदर कर सकते हैं फ़ंक्शन, ताकि गैर-नल मान वापस आ जाएं, और NULL मानों को हमारे द्वारा चुने गए मान से बदल दिया जाए।
उदाहरण:
SELECT IF(TaskCode IS NOT NULL, TaskCode, 'N/A') AS Result FROM Tasks;
परिणाम:
+--------+ | Result | +--------+ | gar123 | | N/A | | N/A | | dog456 | | N/A | | cat789 | +--------+
तो वही परिणाम IFNULL() . के साथ और COALESCE() कार्य।
और हां, हम स्वैप कर सकते हैं IS NOT NULL साथ IS NULL . अगर हम ऐसा करते हैं, तो हमें बाद के तर्कों को भी स्वैप करना होगा:
SELECT IF(TaskCode IS NULL, 'N/A', TaskCode) AS Result FROM Tasks;
IS NULL/IS NOT NULL के साथ संयुक्त केस एक्सप्रेशन
ऐसा करने का दूसरा तरीका CASE . का उपयोग करना है अभिव्यक्ति:
SELECT
CASE
WHEN TaskCode IS NOT NULL THEN TaskCode
ELSE 'N/A'
END AS Result
FROM Tasks;
परिणाम:
+--------+ | Result | +--------+ | gar123 | | N/A | | N/A | | dog456 | | N/A | | cat789 | +--------+
पिछले उदाहरण की तरह, इसे IS NULL . का उपयोग करने के लिए फिर से लिखा जा सकता है इसके बजाय IS NOT NULL :
SELECT
CASE
WHEN TaskCode IS NULL THEN 'N/A'
ELSE TaskCode
END AS Result
FROM Tasks;