MySQL में IF() फ़ंक्शन का उपयोग करके शर्तीय विशेष वर्ण/मान सेट करना
MySQL में IF(condition, true_value, false_value) फ़ंक्शन का उपयोग करके शर्त के आधार पर अलग-अलग मान (विशेष वर्ण, स्ट्रिंग, संख्या) प्रदर्शित या सेट कर सकते हैं।
उदाहरण के साथ पूर्ण कार्यान्वयन
टेबल बनाना
mysql> CREATE TABLE DemoTable637 (
ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName VARCHAR(100),
ClientAge INT
);
रिकॉर्ड डालना
mysql> INSERT INTO DemoTable637(ClientName, ClientAge) VALUES
('Chris', 23), ('Robert', 24), ('David', 57), ('Carol', 60);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable637;
आउटपुट:
+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 1 | Chris | 23 |
| 2 | Robert | 24 |
| 3 | David | 57 |
| 4 | Carol | 60 |
+----------+------------+-----------+
4 rows in set (0.00 sec)
शर्त: नाम NULL नहीं है AND उम्र > 50 → नाम दिखाएं, अन्यथा डैश
mysql> SELECT IF(ClientName IS NOT NULL AND ClientAge > 50, ClientName, '-------------')
FROM DemoTable637;
आउटपुट:
+--------------------------------------------------------------------------+
| IF(ClientName IS NOT NULL AND ClientAge > 50, ClientName, '-------------') |
+--------------------------------------------------------------------------+
| ------------- |
| ------------- |
| David |
| Carol |
+--------------------------------------------------------------------------+
4 rows in set (0.00 sec)
व्याख्या:
- Chris (23): उम्र > 50 असत्य → '-------------'
- Robert (24): उम्र > 50 असत्य → '-------------'
- David (57): नाम नॉट NULL और उम्र > 50 सत्य → 'David'
- Carol (60): नाम नॉट NULL और उम्र > 50 सत्य → 'Carol'
IF() वाक्यविन्यास
IF(condition, value_if_true, value_if_false)
नेस्टेड IF उदाहरण
SELECT ClientName,
IF(ClientAge < 18, 'Minor',
IF(ClientAge < 60, 'Adult', 'Senior')) AS AgeGroup
FROM DemoTable637;
आउटपुट: Chris→Adult, Robert→Adult, David→Senior, Carol→Senior
CASE विकल्प (अधिक पठनीय एकाधिक शर्तों के लिए)
SELECT ClientName,
CASE
WHEN ClientName IS NOT NULL AND ClientAge > 50 THEN ClientName
WHEN ClientAge > 30 THEN 'Experienced'
ELSE 'Junior'
END AS Status
FROM DemoTable637;
UPDATE में IF() उपयोग करना
UPDATE DemoTable637
SET ClientName = IF(ClientAge > 50, CONCAT('Senior: ', ClientName), ClientName);
NULL सुरक्षा
-- IFNULL/COALESCE के साथ
SELECT IF(IFNULL(ClientName, '') = '', 'Anonymous', ClientName) FROM DemoTable637;
-- या
SELECT COALESCE(NULLIF(ClientName, ''), 'Anonymous') FROM DemoTable637;
बूलियन संदर्भ में IF()
MySQL में TRUE = 1, FALSE = 0:
SELECT ClientAge > 50 AS IsSenior FROM DemoTable637; -- 1 या 0 लौटाता है
SELECT IF(ClientAge > 50, 'Yes', 'No') AS IsSenior FROM DemoTable637; -- स्ट्रिंग लौटाता है