在MySQL中使用regexp仅获取数字?

如果要使用REGEXP仅获取数字,请在where子句中使用以下正则表达式(^ [0-9] * $)。

情况1-如果您只希望那些具有正好10位数字的行并且所有行都必须只有数字,请使用以下正则表达式。

SELECT *FROM yourTableName

WHERE yourColumnName REGEXP '^[0-9]{10}$';

情况2-如果只希望数字为1或更大的那些行,则语法如下-

SELECT *FROM yourTableName

WHERE 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

回到顶部