在 MySQL 中使用正則表示式獲取僅包含數字的部分?
如果你想使用正則表示式 (REGEXP) 獲取只有數字的部分,請在 where 子句中使用以下正則表示式 (^\[0-9]*$)。
案例 1 − 如果你只需要那些精確包含 10 位數字且所有字元都必須是數字的行,請使用以下正則表示式。
SELECT *FROM yourTableName
WHERE yourColumnName REGEXP '^[0-9]{10}$';案例 2 − 如果你只需要那些包含一位或多位數字(只有數字)的行,則語法如下:
SELECT *FROM yourTableName WHERE yourColumnName REGEXP '^[0-9]*$';
上述語法將只返回那些不包含任何其他字元的行。
為了理解上述語法,讓我們建立一個表。建立表的查詢如下所示:
mysql> insert into OnlyDigits(UserId, UserName) values('123User1','John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('3445User2','Carol');
Query OK, 1 row affected (0.19 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('145363User3','Mike');
Query OK, 1 row affected (0.20 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('13455User4','Larry');
Query OK, 1 row affected (0.22 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('123555User5','Sam');
Query OK, 1 row affected (0.15 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('596766User6','David');
Query OK, 1 row affected (0.24 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('96977User7','Robert');
Query OK, 1 row affected (0.15 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('99999User8','James');
Query OK, 1 row affected (0.20 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('9999999','James');
Query OK, 1 row affected (0.13 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('153545','Maxwell');
Query OK, 1 row affected (0.23 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('9999986787','Johnson');
Query OK, 1 row affected (0.20 sec)現在,您可以使用 select 語句顯示錶中的所有記錄。查詢如下所示:
mysql> select *from OnlyDigits;
輸出如下:
+----+-------------+----------+ | 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 | +----+-------------+----------+ 11 rows in set (0.00 sec)
案例 1 − 當你想要一個字串中精確包含 10 位數字且所有字元都必須是數字時,以下是用正則表示式的查詢
mysql> select *from OnlyDigits
-> where UserId REGEXP '^[0-9]{10}$';輸出如下:
+----+------------+----------+ | Id | UserId | UserName | +----+------------+----------+ | 11 | 9999986787 | Johnson | +----+------------+----------+ 1 row in set (0.00 sec)
案例 1 的另一種正則表示式。查詢如下:
mysql> select *from OnlyDigits
-> where UserId REGEXP '^[[:digit:]]{10}$';輸出如下:
+----+------------+----------+ | Id | UserId | UserName | +----+------------+----------+ | 11 | 9999986787 | Johnson | +----+------------+----------+ 1 row in set (0.00 sec)
案例 2 − 如果你只需要那些包含一位或多位數字(只有數字)的行。查詢如下:
mysql> select *from OnlyDigits -> where UserId REGEXP'^[0-9]*$';
輸出如下:
+----+------------+----------+ | Id | UserId | UserName | +----+------------+----------+ | 9 | 9999999 | James | | 10 | 153545 | Maxwell | | 11 | 9999986787 | Johnson | +----+------------+----------+ 3 rows in set (0.00 sec)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP