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

MySQL में दो कॉलम से पहला नॉन-NULL मान कैसे चुनें?

MySQL में दो कॉलम में से पहला नॉन-NULL मान चुनने के चार तरीके हैं: IFNULL(), COALESCE(), CASE, और IF()।

टेस्ट टेबल

CREATE TABLE SelectNotNullColumnsDemo (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(20),
    Age INT,
    PRIMARY KEY(Id)
);

INSERT INTO SelectNotNullColumnsDemo(Name, Age) VALUES('John', NULL);
INSERT INTO SelectNotNullColumnsDemo(Name, Age) VALUES(NULL, 23);

डेटा:

+----+------+------+
| Id | Name | Age  |
+----+------+------+
| 1  | John | NULL |
| 2  | NULL | 23   |
+----+------+------+

केस 1: IFNULL() - दो आर्गुमेंट

SELECT IFNULL(Name, Age) AS NotNULLValue FROM SelectNotNullColumnsDemo;

परिणाम:

+--------------+
| NotNULLValue |
+--------------+
| John         |
| 23           |
+--------------+

केस 2: COALESCE() - एकाधिक आर्गुमेंट (अनुशंसित)

SELECT COALESCE(Name, Age) AS NotNULLValue FROM SelectNotNullColumnsDemo;

परिणाम: समान

COALESCE का लाभ: 2+ कॉलम

SELECT COALESCE(col1, col2, col3, col4, 'Default') FROM table;

केस 3: CASE स्टेटमेंट - पूर्ण नियंत्रण

SELECT CASE 
           WHEN Name IS NOT NULL THEN Name 
           ELSE Age 
       END AS NotNULLValue 
FROM SelectNotNullColumnsDemo;

परिणाम: समान

CASE का लाभ: जटिल तर्क

SELECT CASE 
           WHEN Name IS NOT NULL AND Name <> '' THEN Name
           WHEN Age IS NOT NULL THEN Age
           ELSE 'Unknown'
       END AS Value
FROM table;

केस 4: IF() फंक्शन - MySQL-विशिष्ट

SELECT IF(Name IS NULL, Age, Name) AS NotNULLValue FROM SelectNotNullColumnsDemo;

परिणाम: समान

तुलना तालिका

फंक्शनसिंटैक्समानक SQLआर्गुमेंटसर्वश्रेष्ठ उपयोग
IFNULL(a,b)IFNULL(a,b)नहीं2सरल 2-कॉलम फॉलबैक
COALESCE(a,b,c...)COALESCE(a,b,c...)हाँ (ANSI)2+एकाधिक फॉलबैक, पोर्टेबल
CASE WHENCASE WHEN cond THEN a ELSE b ENDहाँ (ANSI)लचीलाजटिल शर्तें
IF(cond,t,f)IF(cond, true_val, false_val)नहीं3सरल बाइनरी शर्त

व्यावहारिक उदाहरण: संपर्क जानकारी

SELECT COALESCE(mobile, landline, email, 'No contact') AS contact_info
FROM customers;

नोट

  • COALESCE ANSI SQL मानक है - अन्य डेटाबेस में भी काम करता है
  • IFNULL और IF केवल MySQL में
  • प्रदर्शन: सभी समान हैं सरल मामलों के लिए
  • COALESCE शॉर्ट-सर्किट मूल्यांकन करता है (पहला नॉन-NULL मिलते ही रुकता है)
  1. - MySQL में ALTER TABLE का उपयोग करके मौजूदा कॉलम पर NOT NULL विशेषता सेट करें

    MySQL में मौजूदा कॉलम को NOT NULL बनाना मौजूदा कॉलम पर NOT NULL प्रतिबंध जोड़ने के लिए, ALTER TABLE ... MODIFY स्टेटमेंट का उपयोग करें जिसमें कॉलम परिभाषा में NOT NULL शामिल हो। टेबल बनाना ); Query OK, 0 rows affected (0.00 sec) UserName पर NOT NULL प्रतिबंध जोड़ना MODIFY UserName VARCHAR(20) NO

  1. - MySQL में दो कॉलम के मान गिनें और NULL को बाहर रखें

    COUNT() फ़ंक्शन से NULL मानों को छोड़कर कॉलम मान गिनना COUNT(कॉलम_नाम) स्वचालित रूप से NULL मानों को अनदेखा करता है। दो कॉलम के गैर-NULL मानों का कुल योग पाने के लिए दोनों COUNT को जोड़ें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1975 ( StudentName varchar(20), StudentMarks int ); Q

  1. - MySQL में मान 0 होने पर दूसरे कॉलम का मान कैसे चुनें?

    IF() फ़ंक्शन का उपयोग यदि किसी कॉलम का मान 0 है तो दूसरे कॉलम का मान लेने के लिए IF() फ़ंक्शन प्रयोग करें: select IF(yourColumnName1=0, yourColumnName2, yourColumnName1) as anyAliasName from yourTableName; टेबल बनाना और डेटा डालना insert into demo30(value,original_value) values(30,0); डेटा देखना