gpt4 book ai didi

Mysql Regex 从 ipv4 替换 0

转载 作者:行者123 更新时间:2023-11-29 04:22:27 25 4
gpt4 key购买 nike

我无法制作一个 mysql 正则表达式,它会删除 IPv4 每 3 个数字序列开头的零。问题是应该在数据库级别提供验证,我不知道如何制定将所有 0., 00., .0, .00 替换为我的 IPv4 中的空字符串的正则表达式。

我希望我的正则表达式做类似的事情:

如果我有 012.123.123.023 输入数据库,它应该保存为 12.123.123.23

谢谢!

最佳答案

利用 MySQL 函数 INET_ATON() and INET_NTOA()您可以可靠地将具有前导零的传入 IPv4 地址转换为不带前导零的相同字符串。用 INET_NTOA() 包裹 INET_ATON() 以将 IP 地址首先转换为其整数值,然后再转换回点分四边形。

在不同地方有前导零的IP:

mysql> SELECT INET_NTOA(INET_ATON('001.110.011.111'));
+-----------------------------------------+
| INET_NTOA(INET_ATON('001.110.011.111')) |
+-----------------------------------------+
| 1.110.11.111 |
+-----------------------------------------+

并且不带前导零进行比较:

mysql> SELECT INET_NTOA(INET_ATON('1.110.11.111'));
+--------------------------------------+
| INET_NTOA(INET_ATON('1.110.11.111')) |
+--------------------------------------+
| 1.110.11.111 |
+--------------------------------------+

注意:如果输入的 IP 地址不是有效地址,这将返回 NULL。它不会返回原始字符串或从错误的 IP 地址中去除前导零:

带有前导零的错误 IP 地址:

mysql> SELECT INET_NTOA(INET_ATON('888.777.123.123'));
+-----------------------------------------+
| INET_NTOA(INET_ATON('888.007.123.123')) |
+-----------------------------------------+
| NULL |
+-----------------------------------------+

关于Mysql Regex 从 ipv4 替换 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19962908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com