mysql – 在数据库中存储十六进制和十六进制字符的最佳数据类型

我正在使用以太坊api.我想将api中的信息存储到mysql表中.

地址数据如下:

0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be
0x1d80982502f3bb75654df13aa32bbd5ac9cab7d6
0xaf13bbdbe1ff53c2df7109a53c217320d2d76ee2
...

我一直在为这些字符使用varchar列.有更好的数据类型吗?我想也许varbinary但我不知道是否有任何好处.缺点是sql代码将更加混乱,因为我将不得不使用HEX()和UNHEX().

最佳答案
对我来说,不存在特定类型,您需要在文本和二进制文件之间进行选择:

CHAR(40):( charset is not important here)

>优点:简单
>缺点:你需要更多空间盘(~100%)
>缺点:您存储存储无效非六进制数据的风险

二进制(20):

>专业人士:减少空间磁盘
>专业人士:您无法存储无效数据
>缺点:你需要转换(如果你需要看到hexa值)

对我来说,数据一致性是最重要的一点:我更喜欢二元期权.

> unhex(‘FF’)== unhex(‘ff’)但’FF’<> ‘FF’
>尝试存储unhex(‘zz’)引发错误,文本没有引发错误)

而且Hex / unHex功能非常简单

提示:您可以将数据存储在BINARY列中,并创建一个hexa视图以轻松查看hexa值.

以下是在二进制区域http://rextester.com/SEV11235中存储数据的示例

转载注明原文:mysql – 在数据库中存储十六进制和十六进制字符的最佳数据类型 - 代码日志