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

MySQL में COALESCE() से NULL मान वाले कॉलम को छोड़कर पहला गैर-NULL मान चुनें

MySQL में जब एक पंक्ति में कई कॉलम हों और उनमें से कुछ NULL हों, तो COALESCE() फ़ंक्शन का उपयोग करके **पहला गैर-NULL मान** चुन सकते हैं। यह वैकल्पिक/फॉलबैक कॉलम, डेटा सफाई, और डिफ़ॉल्ट मान प्रदान करने के लिए उपयोगी है।

सिंटैक्स

COALESCE(value1, value2, value3, ...)
  • बाएं से दाएं मूल्यांकन करता है
  • पहला **गैर-NULL** मान लौटाता है
  • यदि सभी NULL हैं तो NULL लौटाता है
  • कम से कम 2 तर्क आवश्यक

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

टेबल बनाएं:

mysql> CREATE TABLE DemoTable1336 (
    FirstName VARCHAR(20),
    SecondName VARCHAR(20)
);

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

mysql> INSERT INTO DemoTable1336 VALUES('John', NULL);
mysql> INSERT INTO DemoTable1336 VALUES(NULL, 'Chris');
mysql> INSERT INTO DemoTable1336 VALUES('David', 'Mike');

डेटा देखें:

mysql> SELECT * FROM DemoTable1336;
+-----------+------------+
| FirstName | SecondName |
+-----------+------------+
| John      | NULL       |
| NULL      | Chris      |
| David     | Mike       |
+-----------+------------+

COALESCE से पहला गैर-NULL नाम चुनें

mysql> SELECT COALESCE(FirstName, SecondName) AS AlternateName FROM DemoTable1336;

परिणाम

+---------------+
| AlternateName |
+---------------+
| John          |
| Chris         |
| David         |
+---------------+

व्याख्या

अधिक कॉलम के साथ

SELECT COALESCE(phone, mobile, email, 'N/A') AS Contact
FROM customers;

पहला उपलब्ध संपर्क माध्यम चुनता है, कोई नहीं तो 'N/A'।

COALESCE बनाम IFNULL बनाम NULLIF

पंक्तिFirstNameSecondNameCOALESCE परिणाम
1JohnNULLJohn (पहला गैर-NULL)
2NULLChrisChris (दूसरा गैर-NULL)
3DavidMikeDavid (पहला गैर-NULL)

उपयोग के मामले

  • फॉलबैक कॉलम: प्राथमिक ईमेल NULL तो द्वितीयक ईमेल उपयोग करें
  • डिफ़ॉल्ट मान: COALESCE(discount, 0) - NULL को 0 मानें
  • रिपोर्टिंग: प्रदर्शन के लिए NULL को सार्थक मान से बदलें
  • जॉइन स्थिति: COALESCE(t1.id, t2.id) - किसी भी टेबल से ID प्राप्त करें

प्रदर्शन

  • बहुत तेज़ - बिल्ट-इन फ़ंक्शन
  • शॉर्ट-सर्किट मूल्यांकन: पहला गैर-NULL मिलते ही रुक जाता है
  • इंडेक्स उपयोग प्रभावित नहीं करता (WHERE क्लॉज में उपयोग न करें)

मानक SQL अनुपालन

COALESCE ANSI SQL मानक है - MySQL, PostgreSQL, SQL Server, Oracle, SQLite सभी में काम करता है। IFNULL केवल MySQL/SQLite में है।

COALESCE NULL मानों को सुंदरता से संभालने का मानक, पठनीय, और पोर्टेबल तरीका है।

  1. - MySQL में CASE स्टेटमेंट से प्रत्येक SELECT फील्ड के लिए शर्ती WHERE

    CASE एक्सप्रेशन से कॉलम-विशिष्ट शर्ती एग्रीगेशन WHERE क्लॉज के बजाय CASE स्टेटमेंट का उपयोग करके प्रत्येक चयनित फील्ड के लिए अलग-अलग शर्तें लागू करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1988 ( Value1 int, Value2 int, Price int ); Query OK, 0 rows affected (0.64 sec) mysql>

  1. - MySQL SELECT परिणाम को कस्टम वेरिएबल में कैसे स्टोर करें

    उदाहरण टेबल बनाएं: INSERT INTO DemoTable2013 VALUES (Chris), (David), (Mike), (Sam), (Bob); वेरिएबल में काउंट स्टोर करें SET @query := (SELECT COUNT(*) FROM DemoTable2013); वेरिएबल का उपयोग करके अंतिम रिकॉर्ड प्राप्त करें WHERE (@query := @query - 1) = 0; परिणाम +------+ | Name | +------+ | Bo

  1. - MySQL में WHERE IN के साथ NULL मान कैसे संभालें?

    सिंटैक्स select yourColumnName1, yourColumnName2 from yourTableName where yourValue in(yourColumnName1, yourColumnName2) or yourColumnName1 is NULL; उदाहरण insert into demo60(first_name,last_name) values(John,Smith), (John,Doe), (null,Brown), (David,Miller), (David,Smith), (Chris,Brown); क्वेरी

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
फ़ंक्शनतर्कव्यवहार
COALESCE(a,b,c...)2+पहला गैर-NULL लौटाता है
IFNULL(a, b)2MySQL-विशिष्ट; a यदि गैर-NULL वरना b
NULLIF(a, b)2NULL यदि a=b, वरना a