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,varchar,ethereum,varbinary 来源: https://codeday.me/bug/20190516/1113399.html