在mysql中查找表中的IP地址

在mysql中查找表中的IP地址,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我在mysql中有一个表。 该表有一列是UserName 现在,它有常规名称和一些IP地址。 如何在查询中仅显示IP地址 记住,有这样的名字 a、 不列颠哥伦比亚省 所以,如果我写这个 SELECT * FROM table1 WHERE UserName LIKE '%.%.%.%' 这对我来说不行。 我只需要IP地址。您可以使用正则表达式: SELECT * FROM table1 WHERE UserName REGEXP '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

我在mysql中有一个表。 该表有一列是UserName

现在,它有常规名称和一些IP地址。 如何在查询中仅显示IP地址

记住,有这样的名字

a、 不列颠哥伦比亚省

所以,如果我写这个

SELECT *
FROM table1
WHERE UserName LIKE '%.%.%.%'
这对我来说不行。
我只需要IP地址。

您可以使用正则表达式:

SELECT *
FROM table1
WHERE UserName REGEXP '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$';
注:

编辑:

根据MySQL版本,这可能是更好的选择:

SELECT *
FROM table1
WHERE UserName REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$';

我收到这个错误。错误代码:1139。从Regexp获得错误“Repeation operator operator invalid”,有趣的是,它在MariaDB上运行良好。你的原始帖子上的评论链接到另一个类似的答案,使用不同的正则表达式,我也用它更新了原始答案,以供你参考:)还有一件事。为什么它会遗漏一些值?比如这个值,12.226.118。75@user3882752
SELECT'12.226.118.75'REGEXP'^(?[0-9]{1,3}\){3}[0-9]{1,3}$=1。虽然这篇文章可能会回答这个问题,但添加一些解释和相关文档的链接仍然是一个好主意。对当前的OP和未来的访客来说,有好的解释和参考的答案通常更有用。完整详细的答案也更有可能吸引正面的选票。
Select *
 From table1
WHERE UserName REGEXP '^([0-9]{1,3}\.){1,3}[0-9]{1,3}$'