CASE स्टेटमेंट से मान बदलें
शर्तों के आधार पर कॉलम मानों को बदलने के लिए UPDATE के साथ CASE स्टेटमेंट का उपयोग करें।
उदाहरण: टेबल और डेटा
mysql> create table replaceValueDemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(10),
-> isGreaterThan18 varchar(10)
-> );
mysql> INSERT INTO replaceValueDemo(Name,isGreaterThan18) VALUES
('John','YES'), ('Carol','NO'), ('Mike','YES'), ('Bob','YES'),
('Larry','NO'), ('David','NO'), ('James','DONOTKNOW'), ('Robert','DONOTKNOW');
बदलने से पहले
+----+--------+-----------------+ | Id | Name | isGreaterThan18 | +----+--------+-----------------+ | 1 | John | YES | | 2 | Carol | NO | | 7 | James | DONOTKNOW | +----+--------+-----------------+
CASE से YES↔NO स्वैप करें (DONOTKNOW अपरिवर्तित)
mysql> UPDATE replaceValueDemo
-> SET isGreaterThan18 = CASE
-> WHEN isGreaterThan18 = 'YES' THEN 'NO'
-> ELSE 'YES'
-> END
-> WHERE isGreaterThan18 IN ('YES', 'NO');
Query OK, 6 rows affected (0.19 sec)
बदलने के बाद
+----+--------+-----------------+ | Id | Name | isGreaterThan18 | +----+--------+-----------------+ | 1 | John | NO | | 2 | Carol | YES | | 7 | James | DONOTKNOW | | 8 | Robert | DONOTKNOW | +----+--------+-----------------+
CASE के दो रूप
खोजा गया CASE (शर्तें)
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
सरल CASE (मान तुलना)
CASE column_name
WHEN 'YES' THEN 'NO'
WHEN 'NO' THEN 'YES'
ELSE column_name
END
REPLACE() फ़ंक्शन (स्ट्रिंग प्रतिस्थापन)
सरल स्ट्रिंग बदलाव के लिए: UPDATE t SET col = REPLACE(col, 'old', 'new')