首页 > 解决方案 > 在 MySQL 中检测 INET_ATON() 失败的行

问题描述

有没有办法做一个 mysql 选择查询,如:

select INET_ATON(ip_address), id from table ...

INET_ATON 因列中的 IP 无效而失败?

我们在表中发现了一个错误条目,现在我们要确保没有更多条目。

谢谢你。

标签: mysql

解决方案


根据文档:

INET_ATON()NULL如果它不理解它的论点,则返回。[...]INET_ATON()可能会或可能不会返回短格式 IP 地址的非 NULL 结果(例如“127.1”作为“127.0.0.1”的表示)。因此,INET_ATON()不应将其用于此类地址。

因此,您至少需要检测呈现 NULL 的非 NULL 列:

WHERE ip_address IS NOT NULL AND INET_ATON(ip_address) IS NULL

如果您需要微调并从普通的无效地址中分辨出简短的 IP 地址,这会变得更加棘手,但我想您并不真的需要那种级别的准确性。


推荐阅读