我不能创建一个mysql regexp,它会在IPv4的每个3个数字序列的开始时删除零.问题是应该在数据库级别提供验证,我不知道如何制定正则表达式,它将用我的IPv4中的emtpy字符串替换所有的0.,00.,.0,.00.
我希望我的正则表达式能做到这样的事情:
如果我有012.123.123.023进入数据库,它应保存为12.123.123.23
谢谢 !
通过利用MySQL函数INET_ATON(),INET_NTOA()您可以可靠地将具有前导零的传入IPv4地址转换为相同的字符串,而不会引导零.总结INET_ATON()与INET_NTOA()先转换成IP地址到其整数值,然后再返回到一个点分四组.
mysql> SELECT INET_NTOA(INET_ATON('001.110.011.111'));
+-----------------------------------------+
| INET_NTOA(INET_ATON('001.110.011.111')) |
+-----------------------------------------+
| 1.110.11.111 |
+-----------------------------------------+
Run Code Online (Sandbox Code Playgroud)
mysql> SELECT INET_NTOA(INET_ATON('1.110.11.111'));
+--------------------------------------+
| INET_NTOA(INET_ATON('1.110.11.111')) |
+--------------------------------------+
| 1.110.11.111 |
+--------------------------------------+
Run Code Online (Sandbox Code Playgroud)
注意:这将返回NULL如果输入的IP地址是不是一个有效的地址.它不会从错误的IP地址返回原始字符串或条带前导零:
mysql> SELECT INET_NTOA(INET_ATON('888.777.123.123'));
+-----------------------------------------+
| INET_NTOA(INET_ATON('888.007.123.123')) |
+-----------------------------------------+
| NULL |
+-----------------------------------------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |