在mysql中查找表中的IP地址
我在mysql中有一个表。 该表有一列是UserName 现在,它有常规名称和一些IP地址。 如何在查询中仅显示IP地址 记住,有这样的名字 a、 不列颠哥伦比亚省 所以,如果我写这个在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}$
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}$'