5

我已经使用 Java 创建了一个 SQL 数据库。我创建了一个包含两列的表,第一列是一个递增的大整数,第二列我尝试将其定义为 char、varchar 和二进制。

但我仍然没有得到想要的功能。假设我尝试将十六进制数字存储0a到 char 列中,但出现错误。我附加0x到开头,它似乎可以存储,但是当我打印出内容时它是空白的。或者在某些情况下,我会得到诸如“/”或“?”之类的字符。我也尝试使用 SQL 资源管理器,它给了我查看表格的相同结果,

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

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

4

1 回答 1

5

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);
于 2010-11-29T17:21:41.617 回答