插入十六进制值mysql

时间:2010-11-29 17:20:02

标签: mysql data-storage

我使用Java创建了一个sql数据库,但是当涉及到sql时,我是一个菜鸟 有它配置和设置,我有一个表有两列,第一列是 一个大的整数递增,第二个我尝试将它定义为char,varchar和二进制但我仍然没有得到所需的函数,说我尝试并存储0a十六进制数字 char列我得到一个错误,我将0x添加到它似乎存储的开头,但是当我打印出内容时它是空白的,或者在某些情况下我得到的字符如'/'或'?',我也尝试过使用sql explorer,它给我看同样的结果,

我的问题是我需要存储八个字符的十六进制字符串,例如eb8d4ee6。

有人可以告诉我如何做到这一点吗?

2 个答案:

答案 0 :(得分:4)

这是一篇很棒的博客文章,我总是提醒自己正确处理十六进制值和二进制字段,并列出了一些性能影响。

http://www.xaprb.com/blog/2009/02/12/5-ways-to-make-hexadecimal-identifiers-perform-better-on-mysql/

答案 1 :(得分:2)

请参阅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位   精确)。在字符串上下文中,它们   像二进制字符串一样,每个字符串   一对十六进制数字转换为a   字符:

您可能应该将十六进制数存储在整数列中。然后,在使用HEX()函数进行选择时,您可以转换回十六进制。

如,

INSERT INTO MyTable (`MyIntegerColumn`) VALUES (0xeb8d4ee6);