REGEXP के साथ स्ट्रिंग और डिजिट मानों को फ़िल्टर करना
MySQL में रेगुलर एक्सप्रेशन (REGEXP) का उपयोग करके कॉलम मानों को स्ट्रिंग या डिजिट के आधार पर फ़िल्टर करें।
सिंटैक्स:
- केवल स्ट्रिंग मान (डिजिट नहीं):
WHERE yourColumnName NOT REGEXP '^[0-9]+$' - केवल डिजिट मान:
WHERE yourColumnName REGEXP '^[0-9]+$'
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Id VARCHAR(100)
);
मिश्रित मानों के साथ रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('1000');
mysql> INSERT INTO DemoTable VALUES ('John');
mysql> INSERT INTO DemoTable VALUES ('Carol_Smith');
mysql> INSERT INTO DemoTable VALUES ('2000');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------------+ | Id | +-------------+ | 1000 | | John | | Carol_Smith | | 2000 | +-------------+
केस 1: केवल स्ट्रिंग मान प्राप्त करें
mysql> SELECT * FROM DemoTable WHERE Id NOT REGEXP '^[0-9]+$';
आउटपुट:
+-------------+ | Id | +-------------+ | John | | Carol_Smith | +-------------+
केस 2: केवल डिजिट मान प्राप्त करें
mysql> SELECT * FROM DemoTable WHERE Id REGEXP '^[0-9]+$';
आउटपुट:
+------+ | Id | +------+ | 1000 | | 2000 | +------+
रेगुलर एक्सप्रेशन व्याख्या:
^- स्ट्रिंग की शुरुआत[0-9]- कोई भी डिजिट (0-9)+- एक या अधिक बार$- स्ट्रिंग का अंत^[0-9]+$- पूरा स्ट्रिंग केवल डिजिट्स से बना हो
नोट: REGEXP केस-इनसेंसिटिव होता है। केस-सेंसिटिव मैच के लिए REGEXP BINARY या COLLATE utf8mb4_bin का उपयोग करें।