रेगुलर एक्सप्रेशन: ^[0-9]*$ या ^[0-9]{n}$
केवल अंकों (0-9) से बने मानों को खोजने के लिए REGEXP के साथ एंकर (^, $) और अंक वर्ग ([0-9] या [[:digit:]]) का उपयोग करें।
सिंटैक्स
केस 1: ठीक N अंक (उदाहरण: 10 अंक)
SELECT * FROM yourTableName
WHERE yourColumnName REGEXP '^[0-9]{10}$';
केस 2: एक या अधिक अंक (केवल अंक, कोई अन्य वर्ण नहीं)
SELECT * FROM yourTableName WHERE yourColumnName REGEXP '^[0-9]*$';
नोट: * का अर्थ 0 या अधिक है। कम से कम एक अंक के लिए + उपयोग करें: ^[0-9]+$।
POSIX वर्ण वर्ग विकल्प
-- [[:digit:]] [0-9] के समतुल्य
SELECT * FROM yourTableName
WHERE yourColumnName REGEXP '^[[:digit:]]{10}$';
व्यावहारिक उदाहरण
टेबल बनाना और डेटा डालना
mysql> CREATE TABLE OnlyDigits (
Id INT NOT NULL AUTO_INCREMENT,
UserId VARCHAR(20),
UserName VARCHAR(20),
PRIMARY KEY(Id)
);
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('123User1', 'John');
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('3445User2', 'Carol');
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('145363User3', 'Mike');
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('13455User4', 'Larry');
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('123555User5', 'Sam');
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('596766User6', 'David');
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('96977User7', 'Robert');
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('99999User8', 'James');
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('9999999', 'James'); -- केवल अंक
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('153545', 'Maxwell'); -- केवल अंक
mysql> INSERT INTO OnlyDigits(UserId, UserName) VALUES('9999986787', 'Johnson'); -- 10 अंक
सभी रिकॉर्ड
+----+-------------+----------+ | Id | UserId | UserName | +----+-------------+----------+ | 1 | 123User1 | John | | 2 | 3445User2 | Carol | | 3 | 145363User3 | Mike | | 4 | 13455User4 | Larry | | 5 | 123555User5 | Sam | | 6 | 596766User6 | David | | 7 | 96977User7 | Robert | | 8 | 99999User8 | James | | 9 | 9999999 | James | | 10 | 153545 | Maxwell | | 11 | 9999986787 | Johnson | +----+-------------+----------+
केस 1: ठीक 10 अंक
mysql> SELECT * FROM OnlyDigits WHERE UserId REGEXP '^[0-9]{10}$';
+----+------------+----------+ | Id | UserId | UserName | +----+------------+----------+ | 11 | 9999986787 | Johnson | +----+------------+----------+
केस 2: केवल अंक (एक या अधिक)
mysql> SELECT * FROM OnlyDigits WHERE UserId REGEXP '^[0-9]+$';
+----+------------+----------+ | Id | UserId | UserName | +----+------------+----------+ | 9 | 9999999 | James | | 10 | 153545 | Maxwell | | 11 | 9999986787 | Johnson | +----+------------+----------+
मुख्य बिंदु
^और$एंकर पूरे स्ट्रिंग के मिलान को सुनिश्चित करते हैं।{n}ठीक n घटनाएं;+एक या अधिक;*शून्य या अधिक।[[:digit:]]लोकेल-स्वतंत्र अंक वर्ग है।REGEXPइंडेक्स का उपयोग नहीं करता; बड़े टेबल पर प्रदर्शन विचार करें।