Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में CASE से फील्ड खाली ('') है या NULL कैसे जांचें?

MySQL में NULL और खाली स्ट्रिंग '' **अलग** हैं। दोनों की जांच के लिए CASE स्टेटमेंट का उपयोग करके प्रत्येक स्थिति के लिए अलग संदेश/मान दे सकते हैं।

सिंटैक्स

SELECT *, 
       CASE 
           WHEN yourColumn = '' THEN 'Empty string message'
           WHEN yourColumn IS NULL THEN 'NULL message'
           ELSE CONCAT(yourColumn, ' is a value')
       END AS status
FROM yourTableName;

उदाहरण के साथ समझें

टेबल बनाएं:

CREATE TABLE checkFieldDemo (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(10),
    PRIMARY KEY(Id)
);

NULL, खाली स्ट्रिंग, और सामान्य मान डालें:

INSERT INTO checkFieldDemo(Name) VALUES(NULL);
INSERT INTO checkFieldDemo(Name) VALUES('John');
INSERT INTO checkFieldDemo(Name) VALUES(NULL);
INSERT INTO checkFieldDemo(Name) VALUES('');      -- खाली स्ट्रिंग
INSERT INTO checkFieldDemo(Name) VALUES('Carol');
INSERT INTO checkFieldDemo(Name) VALUES('');      -- खाली स्ट्रिंग
INSERT INTO checkFieldDemo(Name) VALUES(NULL);

सभी रिकॉर्ड देखें:

SELECT * FROM checkFieldDemo;

आउटपुट:

+----+-------+
| Id | Name  |
+----+-------+
| 1  | NULL  |
| 2  | John  |
| 3  | NULL  |
| 4  |       |  -- खाली स्ट्रिंग
| 5  | Carol |
| 6  |       |  -- खाली स्ट्रिंग
| 7  | NULL  |
+----+-------+

CASE से प्रत्येक स्थिति पहचानें

SELECT *,
       CASE 
           WHEN Name = '' THEN 'It is an empty string'
           WHEN Name IS NULL THEN 'It is a NULL value'
           ELSE CONCAT(Name, ' is a Name')
       END AS ListOfValues
FROM checkFieldDemo;

परिणाम:

+----+-------+-----------------------+
| Id | Name  | ListOfValues          |
+----+-------+-----------------------+
| 1  | NULL  | It is a NULL value    |
| 2  | John  | John is a Name        |
| 3  | NULL  | It is a NULL value    |
| 4  |       | It is an empty string |
| 5  | Carol | Carol is a Name       |
| 6  |       | It is an empty string |
| 7  | NULL  | It is a NULL value    |
+----+-------+-----------------------+

महत्वपूर्ण: NULL तुलना नियम

एक्सप्रेशनपरिणामव्याख्या
NULL = ''NULLFALSE नहीं, UNKNOWN
NULL = NULLNULLFALSE नहीं, UNKNOWN
NULL IS NULLTRUEसही जांच
'' = ''TRUEखाली स्ट्रिंग तुलना
'' IS NULLFALSEखाली स्ट्रिंग ≠ NULL

WHERE क्लॉज में उपयोग

-- केवल NULL
WHERE Name IS NULL

-- केवल खाली स्ट्रिंग
WHERE Name = ''

-- NULL या खाली स्ट्रिंग दोनों
WHERE Name IS NULL OR Name = ''

-- नॉन-NULL और नॉन-खाली
WHERE Name IS NOT NULL AND Name <> ''

COALESCE/IFNULL के साथ सरलीकरण

-- NULL को खाली स्ट्रिंग मानें
SELECT CASE WHEN COALESCE(Name, '') = '' THEN 'Empty/NULL' ELSE Name END FROM table;

-- या IFNULL
SELECT CASE WHEN IFNULL(Name, '') = '' THEN 'Empty/NULL' ELSE Name END FROM table;

नोट

  • CASE क्रम महत्वपूर्ण है: पहली मैचिंग शर्त 실행 होती है
  • WHEN Name = '' पहले रखें, फिर WHEN Name IS NULL
  • उल्टा क्रम भी काम करेगा क्योंकि NULL = '' कभी TRUE नहीं होता
  • एप्लिकेशन लेवल पर भी NULL और खाली स्ट्रिंग का अलग हैंडलिंग करें
  1. - MySQL में किसी कॉलम में NULL या NOT NULL मानों की जांच कैसे करें

    IS NOT NULL ऑपरेटर का उपयोग करके NULL मानों की जांच इसके लिए MySQL में IS NOT NULL का उपयोग करें। सिंटैक्स देखें: select yourColumnName IS NOT NULL from yourTableName; उपरोक्त क्वेरी 1 लौटाती है यदि कॉलम में NULL मान नहीं है अन्यथा 0। पहले टेबल बनाएं: create table DemoTable1408 ( FirstName varchar(

  1. - MySQL में COALESCE() का उपयोग करके एक फ़ील्ड चुनें और यदि NULL हो तो दूसरा चुनें

    MySQL COALESCE() के साथ पहला गैर-NULL मान चुनना COALESCE() फ़ंक्शन अपने तर्कों में से पहला गैर-NULL मान लौटाता है। यह वैकल्पिक कॉलम के लिए फ़ॉलबैक मान प्रदान करने के लिए आदर्श है। उदाहरण: नाम या आयु में से पहला गैर-NULL चुनना SELECT * FROM DemoTable1470; +-----------+------+ | FirstName | Age | +

  1. - MySQL स्टोर्ड प्रोसीजर में NULL या खाली वेरिएबल की जांच करें

    NULL या खाली वेरिएबल की जांच के लिए IF कंडीशन का उपयोग करें। आइए एक स्टोर्ड प्रोसीजर बनाते हैं: mysql> delimiter // mysql> create procedure checkingForNullDemo(Name varchar(20)) begin if Name is NULL OR Name= then select Adam Smith; else select Name; end if ; end /