在MySQL中使用regexp仅获取数字?
如果要使用REGEXP仅获取数字,请在where子句中使用以下正则表达式(^ [0-9] * $)。
情况1-如果您只希望那些具有正好10位数字的行并且所有行都必须只有数字,请使用以下正则表达式。
SELECT *FROM yourTableNameWHERE yourColumnName REGEXP '^[0-9]{10}$';
情况2-如果只希望数字为1或更大的那些行,则语法如下-
SELECT *FROM yourTableNameWHERE yourColumnName REGEXP '^[0-9]*$';
上面的语法将仅给出不包含任何字符的那些行。
为了理解上述语法,让我们创建一个表。创建表的查询如下-
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');
现在,您可以使用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)
以上是 在MySQL中使用regexp仅获取数字? 的全部内容, 来源链接: utcz.com/z/347300.html