在MySQL数据库中存储MAC地址,最好使用哪种字段类型?此外,它应该以特定的分隔符(冒号或破折号)存储还是不带分隔符存储?
使用BINARY(6)字段类型来存储MAC地址是最佳实践,因为MAC地址通常由六个字节组成。可以使用任何分隔符存储MAC地址,但不建议使用分隔符,因为这样可能会导致一些查询和比较操作变得更加困难。在MySQL数据库中存储MAC地址,最好使用哪种字段类型?此外,它应该以特定的分隔符(冒号或破折号)存储还是不带分隔符存储?
使用BINARY(6)字段类型来存储MAC地址是最佳实践,因为MAC地址通常由六个字节组成。可以使用任何分隔符存储MAC地址,但不建议使用分隔符,因为这样可能会导致一些查询和比较操作变得更加困难。使用 bigint unsigned(8 个字节),您就可以:
select hex(mac_addr) from log;
并且insert into log (mac_addr) values (x'000CF15698AD');
请看这里。通常情况下,CHAR(12)是不错的选择,但具体取决于您的需求。或者您可以使用PostgreSQL,它有一个内置的macaddr类型。
鉴于MySQL不支持用户定义扩展,也似乎不支持任意扩展或插件(仅限于存储引擎),您最好将其存储为CHAR(17)作为标准符号的ASCII字符串(例如,使用冒号分隔符),或者是一个小型BLOB并直接存储字节。然而,对于大多数应用程序来说,字符串表示法更加友好。
您可能希望将其与验证它是否为MAC地址的触发器配对,因为这实际上是在不支持自定义类型的情况下强制执行数据有效性的唯一方法。