LIKE ऑपरेटर के साथ अंडरस्कोर वाले पैटर्न मैच करके डिलीट करना
अंडरस्कोर (_) LIKE में वाइल्डकार्ड होता है (सिंगल कैरेक्टर से मेल खाता है), लेकिन यहां हम इसे लिटरल कैरेक्टर के रूप में मैच करना चाहते हैं। आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(40),
BornMonth VARCHAR(40)
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable (Name, BornMonth) VALUES ('Chris', 'MONTH_DEC');
mysql> INSERT INTO DemoTable (Name, BornMonth) VALUES ('Bob', 'MONTH_JAN');
mysql> INSERT INTO DemoTable VALUES ('Mike', 'MONTH_FEB');
mysql> INSERT INTO DemoTable VALUES ('David', 'MONTH_JAN');
mysql> INSERT INTO DemoTable VALUES ('Carol', 'MONTH_MARCH');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+----+-------+-------------+ | Id | Name | BornMonth | +----+-------+-------------+ | 1 | Chris | MONTH_DEC | | 2 | Bob | MONTH_JAN | | 3 | Mike | MONTH_FEB | | 4 | David | MONTH_JAN | | 5 | Carol | MONTH_MARCH | +----+-------+-------------+
"MONTH_JAN" वाले रिकॉर्ड्स डिलीट करने के लिए क्वेरी:
mysql> DELETE FROM DemoTable WHERE BornMonth LIKE '%MONTH_JAN%';
आउटपुट: Query OK, 2 rows affected
टेबल रिकॉर्ड्स फिर से जांचें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+----+-------+-------------+ | Id | Name | BornMonth | +----+-------+-------------+ | 1 | Chris | MONTH_DEC | | 3 | Mike | MONTH_FEB | | 5 | Carol | MONTH_MARCH | +----+-------+-------------+
व्याख्या:
LIKE '%MONTH_JAN%'पैटर्न किसी भी ऐसे स्ट्रिंग से मेल खाता है जिसमें 'MONTH_JAN' कहीं भी हो- वाइल्डकार्ड
%किसी भी संख्या में वर्णों (शून्य सहित) से मेल खाता है - चूंकि पैटर्न में अंडरस्कोर (_) लिटरल टेक्स्ट का हिस्सा है, यह वाइल्डकार्ड के रूप में काम नहीं करता - यह केवल अंडरस्कोर से मेल खाता है
नोट: यदि आप अंडरस्कोर को वाइल्डकार्ड के रूप में ट्रीट करना चाहते हैं (यानी किसी भी सिंगल कैरेक्टर से मेल खाने के लिए), तो आपको इसे एस्केप करना होगा: LIKE '%MONTH\_JAN%' ESCAPE '\\'।