Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में REGEXP का उपयोग करके केवल अंकों वाली पंक्तियाँ कैसे प्राप्त करें?


रेगुलर एक्सप्रेशन: ^[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 इंडेक्स का उपयोग नहीं करता; बड़े टेबल पर प्रदर्शन विचार करें।
  1. - MySQL 8.0 REGEXP_REPLACE से संख्या हटाकर केवल स्ट्रिंग और स्लैश रखें

    MySQL 8.0 में REGEXP_REPLACE() फ़ंक्शन का उपयोग करके स्ट्रिंग से संख्याओं को हटाकर केवल अक्षर और स्लैश (/) रख सकते हैं। सिंटैक्स REGEXP_REPLACE(स्ट्रिंग, पैटर्न, प्रतिस्थापन) उदाहरण 1. टेबल बनाएं CREATE TABLE DemoTable1595 (StudentCode VARCHAR(50)); 2. डेटा डालें INSERT INTO DemoTable1595 VALU

  1. - MySQL में SELECT INTO वेरिएबल से विशिष्ट पंक्ति का एकल मान प्राप्त करें

    SELECT column INTO @variable FROM table WHERE condition का उपयोग करके एकल पंक्ति का एकल मान यूज़र-डिफ़ाइन्ड वेरिएबल में संग्रहीत करें। टेबल बनाएं mysql> CREATE TABLE DemoTable1896 ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName VARCHAR(20), StudentMarks INT ); डेटा

  1. - MySQL स्टोर्ड प्रोसीजर में IN() से विशिष्ट रिकॉर्ड चुनें

    स्टोर्ड प्रोसीजर में IN() पैरामीटर से सटीक मिलान करें स्टोर्ड प्रोसीजर में IN() क्लॉज का उपयोग करके पास किए गए पैरामीटर से सटीक मिलान वाली पंक्ति चुनें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable2004 ( UserId varchar(20), UserName varchar(20) ); Query OK, 0 rows affected (0.57 sec) m