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

MySQL में NULL को किसी भिन्न मान से बदलने के 4 तरीके

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;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql DB से JFreechart TimeSeriesCollection को पॉप्युलेट करें?

  2. MySQL - एक ही संरचना के साथ कई तालिकाओं से डेटा का चयन करना, लेकिन अलग-अलग डेटा

  3. MySQL अपडेट इनर जॉइन टेबल क्वेरी

  4. MySQL में डेटा कैसे जेनरेट करें?

  5. फर्जी विदेशी कुंजी बाधा विफल