MySQL:存储MAC地址的最佳方式?

发布于 2024-10-09 00:44:33 字数 76 浏览 3 评论 0原文

在 MySQL 数据库中存储 MAC 地址的最佳字段类型是什么?另外,它应该使用特定的分隔符(冒号或破折号)存储还是应该不使用分隔符存储?

What's the best field type to use to store MAC addresses in a MySQL database? Also, should it be stored with a certain separator (colon or dash) or should it be stored without a separator?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ゃ懵逼小萝莉 2024-10-16 00:44:33

使用 bigint unsigned (8 bytes) 那么你可以:

select hex(mac_addr) from log;

并且

insert into log (mac_addr) values (x'000CF15698AD');

use bigint unsigned (8 bytes) then you can:

select hex(mac_addr) from log;

and

insert into log (mac_addr) values (x'000CF15698AD');
你没皮卡萌 2024-10-16 00:44:33

看看这里。一般来说,CHAR(12) 很好,但细节取决于您的需要。或者只使用 PostgreSQL,它有一个内置的 macaddr 类型。

Take a look here. Generally, CHAR(12) is good but details depend on your needs. Or just use PostgreSQL, which has a built-in macaddr type.

只等公子 2024-10-16 00:44:33

鉴于 MySQL 不支持用户定义的扩展,它似乎也不支持任意扩展或插件(仅适用于存储引擎),您最好的选择是将其存储为 CHAR(17) 作为标准表示法中的 ASCII 字符串(例如,带冒号分隔符),或一个小 BLOB 并直接存储字节。然而,字符串表示法对于大多数应用程序来说会更加友好。

您可能希望将其与验证其是否为 MAC 地址的触发器配对,因为这确实是在不支持自定义类型的情况下强制数据有效性的唯一方法。

Given that MySQL does not support user defined extensions, nor does it seem to support arbitrary extensions or plugins (just for storage engines), your best bet is to store it as a CHAR(17) as an ASCII string in standard notation (e.g., with colon separators), or a small BLOB and store the bytes directly. However, the string notation is going to be more friendly for most applications.

You may want to pair it with a trigger that validates that it is a MAC address, since that is really the only way to enforce data validity without support for custom types.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文