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

MySQL में NOT EQUAL (<>) ऑपरेटर NULL की मौजूदगी में काम नहीं करता: IS NOT NULL उपयोग करें

MySQL में NULL मानों की मौजूदगी में NOT EQUAL (<>) तुलना की समस्या और समाधान

समस्या:

SQL में NULL <> value का परिणाम NULL होता है (TRUE नहीं), क्योंकि NULL "अज्ञात" है। इसलिए WHERE col <> 2 उन पंक्तियों को बाहर कर देगा जहां col NULL है।

समाधान: IS NOT NULL या IS NULL उपयोग करें

व्यावहारिक उदाहरण

1. टेबल बनाएं (NULL मानों के साथ):

mysql> CREATE TABLE IsNullDemo (
    -> ProductId INT,
    -> ProductName VARCHAR(100),
    -> ProductBackOrder INT
    -> ); 
Query OK, 0 rows affected (0.54 sec)

2. डेटा डालें (कुछ NULL):

mysql> INSERT INTO IsNullDemo VALUES(100,'First-Product',NULL);
mysql> INSERT INTO IsNullDemo VALUES(101,'Second-Product',2);
mysql> INSERT INTO IsNullDemo VALUES(102,'Third-Product',NULL);
mysql> INSERT INTO IsNullDemo VALUES(103,'Fourth-Product',4);
mysql> INSERT INTO IsNullDemo VALUES(104,'Fifth-Product',10);
mysql> INSERT INTO IsNullDemo VALUES(105,'Sixth-Product',NULL);

3. सभी रिकॉर्ड:

+-----------+----------------+------------------+ 
| ProductId | ProductName    | ProductBackOrder | 
+-----------+----------------+------------------+ 
| 100       | First-Product  | NULL             | 
| 101       | Second-Product | 2                | 
| 102       | Third-Product  | NULL             | 
| 103       | Fourth-Product | 4                | 
| 104       | Fifth-Product  | 10               | 
| 105       | Sixth-Product  | NULL             | 
+-----------+----------------+------------------+ 
6 rows in set (0.00 sec)

केस 1: NULL को बाहर रखें (नॉन-NULL और ≠ 2):

mysql> SELECT * FROM IsNullDemo 
    -> WHERE ProductBackOrder IS NOT NULL OR ProductBackOrder <> 2;
+-----------+----------------+------------------+ 
| ProductId | ProductName    | ProductBackOrder | 
+-----------+----------------+------------------+ 
| 101       | Second-Product | 2                | 
| 103       | Fourth-Product | 4                | 
| 104       | Fifth-Product  | 10               | 
+-----------+----------------+------------------+ 
3 rows in set (0.03 sec)

नोट: IS NOT NULL OR <> 2 का अर्थ है "या तो NULL नहीं है, या 2 नहीं है" — लेकिन चूंकि 2 NULL नहीं है, यह शामिल हो जाता है।

केस 2: NULL को शामिल करें (NULL या ≠ 2):

mysql> SELECT * FROM IsNullDemo 
    -> WHERE ProductBackOrder IS NULL OR ProductBackOrder <> 2;
+-----------+----------------+------------------+ 
| ProductId | ProductName    | ProductBackOrder | 
+-----------+----------------+------------------+ 
| 100       | First-Product  | NULL             | 
| 102       | Third-Product  | NULL             | 
| 103       | Fourth-Product | 4                | 
| 104       | Fifth-Product  | 10               | 
| 105       | Sixth-Product  | NULL             | 
+-----------+----------------+------------------+ 
5 rows in set (0.00 sec)

सही लॉजिक के लिए पैटर्न:

इरादासही WHERE क्लॉज
मान 2 नहीं है (NULL बाहर)col IS NOT NULL AND col <> 2
मान 2 नहीं है (NULL शामिल)col IS NULL OR col <> 2
मान 2 है (NULL बाहर)col = 2
मान 2 है या NULL हैcol = 2 OR col IS NULL

NULL-सेफ तुलना ऑपरेटर (MySQL):


            
  1. - MySQL में COALESCE से NULL पंक्ति के साथ कॉलम गुणा करें

    जब किसी संख्यात्मक कॉलम में NULL हो, तो गणना (जैसे गुणा) का परिणाम NULL हो जाता है। COALESCE() का उपयोग करके NULL को डिफ़ॉल्ट मान (जैसे 1) से बदल सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1842 ( NumberOfItems INT, Amount INT ); डेटा डालें (एक पंक्ति में NULL) mysql> INSERT IN

  1. - MySQL में NOT NULL मान के लिए 1 सेट करें

    MySQL में किसी कॉलम के NOT NULL मान होने पर 1 और NULL होने पर 0 लौटाने के लिए IF() फंक्शन के साथ IS NOT NULL ऑपरेटर का उपयोग करें। यह डेटा वैलिडेशन, रिपोर्टिंग, और कंडीशनल एग्रीगेशन के लिए उपयोगी है। बुनियादी सिंटैक्स SELECT IF( IS NOT NULL, 1, 0) AS anyAliasName; आउटपुट: 1 (क्योंकि खाली स्ट्रिंग N

  1. - MySQL में IF() और IS NULL से कॉलम अपडेट करना

    शर्ती कॉलम अपडेट: यदि NULL तो अपडेट करें, अन्यथा नहीं IF() फ़ंक्शन और IS NULL प्रॉपर्टी का उपयोग करके एक कॉलम को अपडेट करें यदि वह NULL है, अन्यथा दूसरा कॉलम अपडेट करें, और यदि दोनों NULL नहीं हैं तो कुछ न करें। पहले टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1976 ( FirstName varchar(