我在MySQL数据库中有一个BINARY(255)列,我需要它能够完全按照我的方式存储二进制数据。
如果我运行查询(UPDATE表SET bindata = 0xffff WHERE id = 1),数据将显示前导零(0ffff0000)。但是,如果我在0x(102,显然是?)之后添加了足够的字符,则前导零消失并且插入的值正确显示。
为什么会发生这种情况,如何让它停止?
答案 0 :(得分:1)
正如hexadecimal literals上的mysql文档所说:
使用包含奇数位数的
0xval
表示法写入的值被视为具有额外的前导0.例如,0xaaa
被解释为0x0aaa
。
Mysql也支持X'val'
表示法,但如果文字具有奇数位数,则会引发语法错误。
这种限制的原因很简单:
默认情况下,十六进制文字是二进制字符串,其中每对十六进制数字代表一个字符。
我不知道有任何方法可以克服这个限制。如果你有奇数位数,你可能想要用数字填充数字。