数据库字段ip地址varbinary、inet6_aton()、inet6_ntoa()等
文章目录准备数据inet6_aton()、 inet6_ntoa()其他函数为什么ip地址要用varbinary(16)?其他文档这里主要说下mysql的varbinary字段类型。准备数据CREATETABLEuser_logs(idBIGINTUNSIGNEDAUTO_INCREMENTPRIMARYKEY,ipVARBINARY(16)NOTNULLCOMMENT存储IPv4/IPv6地址);-- 插入INSERTINTOuser_logs(ip)VALUES(INET6_ATON(192.168.1.1));INSERTINTOuser_logs(ip)VALUES(INET6_ATON(2001:db8::1));INSERTINTOuser_logs(ip)VALUES(INET6_ATON(192.168.1.5));INSERTINTOuser_logs(ip)VALUES(INET6_ATON(192.168.1.100));INSERTINTOuser_logs(ip)VALUES(INET6_ATON(192.168.2.1));-- 这个在范围外inet6_aton()、 inet6_ntoa()维度inet6_aton()inet6_ntoa()含义address to numeric(地址字符串转数值)numeric to address(数值转地址字符串)场景插入数据时获取数据时示例基础查法SELECTINET6_NTOA(ip)ASip_addressFROMuser_logs;范围查法SELECTINET6_NTOA(ip)FROMuser_logsWHEREipBETWEENINET6_ATON(192.168.1.0)ANDINET6_ATON(192.168.2.255);其他函数查看16进制SELECTHEX(ip)FROMuser_logs;查看长度(ipv4是4个字节长度、ipv6格式是16个字节长度)SELECTlength(ip)FROMuser_logs;为什么ip地址要用varbinary(16)?1、节省空间。如果存的是ipv4是4个长度。如果是ipv6是16个字节长度。2、范围查询和排序既快又准字符串范围查询很坑排序也不准。varbinary是数值完美解决这两个问题。其他文档mysql官网其他函数(inet6_aton等)https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2462327.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!