use*_*156 4 mysql data-storage
我已经使用Java创建了一个sql数据库,在使用sql时我是一个菜鸟,但已对其进行配置和设置,我创建了一个包含两列的表,第一列是一个递增的大整数,第二列是我尝试过的将其定义为char,varchar和binary,但我仍未获得所需的功能,例如我尝试将0a十六进制数存储到char列中,但出现错误,我将0x附加到开头似乎存储了,但是当我将内容打印为空白,或者在某些情况下得到诸如“ /”或“?”之类的字符,我也尝试使用sql Explorer,它在查看表时也得到相同的结果,
我的问题是我需要存储八个字符的十六进制字符串,例如eb8d4ee6。
有人可以告诉我如何做到这一点吗?
见http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html
MySQL 支持十六进制值,使用 X'val'、x'val' 或 0xval 格式编写,其中 val 包含十六进制数字 (0..9, A..F)。数字的字母大小写无关紧要。对于使用 X'val' 或 x'val' 格式写入的值,val 必须包含偶数位数。对于使用 0xval 语法编写的值,包含奇数位数的值被视为具有额外的前导 0。例如,0x0a 和 0xaaa 被解释为 0x0a 和 0x0aaa。
在数字上下文中,十六进制值的作用类似于整数(64 位精度)。在字符串上下文中,它们的作用类似于二进制字符串,其中每对十六进制数字都转换为一个字符:
您可能应该将十六进制数存储在整数列中。然后,您可以在选择使用该HEX()
功能时转换回十六进制。
例如,
INSERT INTO MyTable (`MyIntegerColumn`) VALUES (0xeb8d4ee6);
Run Code Online (Sandbox Code Playgroud)
我经常引用这是一篇很棒的博客文章,以提醒自己有关十六进制值和二进制字段的正确处理,并列出了一些性能影响。