MySQL में एक IF()
है फ़ंक्शन जो एक सरल "IF/ELSE" ऑपरेशन करने का एक सुविधाजनक तरीका प्रदान करता है।
यह एक बुनियादी IF
. के समान काम करता है /ELSE
कथन, इसमें यह हमें एक शर्त की जांच करने की अनुमति देता है, और यह इस पर निर्भर करता है कि यह सच है या नहीं, एक अलग परिणाम लौटाता है।
अधिक विशेष रूप से, यदि IF()
. का पहला तर्क फ़ंक्शन सत्य है, दूसरा तर्क वापस कर दिया गया है। अगर यह सच नहीं है, तो तीसरा तर्क वापस कर दिया जाता है।
सिंटैक्स
IF(expr1,expr2,expr3)
अगर expr1
है TRUE
(
और expr1
<> 0
), expr1
न्यूल नहीं हैIF()
रिटर्न expr2
. अन्यथा, यह expr3
returns लौटाता है ।
वापसी का प्रकार
- अगर
expr2
याexpr3
एक स्ट्रिंग उत्पन्न करें, परिणाम एक स्ट्रिंग है। अगरexpr2
औरexpr3
दोनों स्ट्रिंग हैं और या तो स्ट्रिंग केस-संवेदी है, परिणाम केस-संवेदी है। - अगर
expr2
याexpr3
एक फ़्लोटिंग-पॉइंट मान उत्पन्न करें, परिणाम एक फ़्लोटिंग-पॉइंट मान है। - अगर
expr2
याexpr3
एक पूर्णांक उत्पन्न करें, परिणाम एक पूर्णांक है।
उदाहरण
यह कैसे काम करता है यह दिखाने के लिए यहां एक सरल उदाहरण दिया गया है:
SELECT IF( 1 > 2, 'Yes', 'No' );
परिणाम:
No
यहां, हमने जांच की कि 1 2 से बड़ा है या नहीं। यह नहीं है, और इसलिए तीसरा तर्क वापस कर दिया गया था।
यहां बताया गया है कि जब पहली अभिव्यक्ति सत्य होती है तो क्या होता है:
SELECT IF( 2 > 1, 'Yes', 'No' );
परिणाम:
Yes
डेटाबेस उदाहरण
यहां एक उदाहरण दिया गया है जो IF()
. का उपयोग करता है डेटाबेस को क्वेरी करते समय फ़ंक्शन:
SELECT
Name,
Population,
IF( Population > 10000000, 'Big', 'Small' ) AS "Big/Small"
FROM Country
ORDER BY Name ASC
LIMIT 10;
परिणाम:
+---------------------+------------+-----------+ | Name | Population | Big/Small | +---------------------+------------+-----------+ | Afghanistan | 22720000 | Big | | Albania | 3401200 | Small | | Algeria | 31471000 | Big | | American Samoa | 68000 | Small | | Andorra | 78000 | Small | | Angola | 12878000 | Big | | Anguilla | 8000 | Small | | Antarctica | 0 | Small | | Antigua and Barbuda | 68000 | Small | | Argentina | 37032000 | Big | +---------------------+------------+-----------+
नेस्टेड IF()
कार्य
घोंसला बनाना संभव है IF()
द्विआधारी परिणाम से अधिक प्रदान करने के लिए कार्य करता है।
उदाहरण के लिए:
SELECT
Name,
Population,
IF(
Population > 10000000,
IF( Population > 100000000, 'REALLY Big', 'Big' ),
'Small'
) AS "Size"
FROM Country
WHERE Region = 'Southern and Central Asia'
ORDER BY Population DESC;
परिणाम:
+--------------+------------+------------+ | Name | Population | Size | +--------------+------------+------------+ | India | 1013662000 | REALLY Big | | Pakistan | 156483000 | REALLY Big | | Bangladesh | 129155000 | REALLY Big | | Iran | 67702000 | Big | | Uzbekistan | 24318000 | Big | | Nepal | 23930000 | Big | | Afghanistan | 22720000 | Big | | Sri Lanka | 18827000 | Big | | Kazakstan | 16223000 | Big | | Tajikistan | 6188000 | Small | | Kyrgyzstan | 4699000 | Small | | Turkmenistan | 4459000 | Small | | Bhutan | 2124000 | Small | | Maldives | 286000 | Small | +--------------+------------+------------+
शून्य और शून्य
अगर पहली अभिव्यक्ति या तो NULL
है या 0
, तो यह गलत है, और दूसरा मान लौटा दिया जाता है:
SELECT
IF( 1, 'True', 'False' ) AS "1",
IF( null, 'True', 'False' ) AS "Null",
IF( 0, 'True', 'False' ) AS "Zero";
परिणाम:
+------+-------+-------+ | 1 | Null | Zero | +------+-------+-------+ | True | False | False | +------+-------+-------+
यहां, पहला कॉलम सत्य है क्योंकि यह 1 को हल करता है। अन्य दो कॉलम दूसरा तर्क लौटाते हैं, क्योंकि उनका पहला तर्क null
था और 0
क्रमशः।
यहां एक डेटाबेस उदाहरण दिया गया है:
SELECT
Name,
GNPOld,
IF( GNPOld, GNPOld, 'None' )
FROM Country
ORDER BY Name ASC
LIMIT 10;
परिणाम:
+---------------------+-----------+------------------------------+ | Name | GNPOld | IF( GNPOld, GNPOld, 'None' ) | +---------------------+-----------+------------------------------+ | Afghanistan | NULL | None | | Albania | 2500.00 | 2500.00 | | Algeria | 46966.00 | 46966.00 | | American Samoa | NULL | None | | Andorra | NULL | None | | Angola | 7984.00 | 7984.00 | | Anguilla | NULL | None | | Antarctica | NULL | None | | Antigua and Barbuda | 584.00 | 584.00 | | Argentina | 323310.00 | 323310.00 | +---------------------+-----------+------------------------------+
हालांकि इस मामले में IFNULL()
. का उपयोग करके थोड़े कम कोड के साथ समान परिणाम प्राप्त किया जा सकता था फ़ंक्शन या यहां तक कि COALESCE()
समारोह।