为什么MySQL有时为BINARY列添加前导零,我该如何让它停止?

时间:2018-01-14 21:44:43

标签: mysql binary leading-zero

我在MySQL数据库中有一个BINARY(255)列,我需要它能够完全按照我的方式存储二进制数据。

如果我运行查询(UPDATE表SET bindata = 0xffff WHERE id = 1),数据将显示前导零(0ffff0000)。但是,如果我在0x(102,显然是?)之后添加了足够的字符,则前导零消失并且插入的值正确显示。

为什么会发生这种情况,如何让它停止?

1 个答案:

答案 0 :(得分:1)

正如hexadecimal literals上的mysql文档所说:

  

使用包含奇数位数的0xval表示法写入的值被视为具有额外的前导0.例如,0xaaa被解释为0x0aaa

Mysql也支持X'val'表示法,但如果文字具有奇数位数,则会引发语法错误。

这种限制的原因很简单:

  

默认情况下,十六进制文字是二进制字符串,其中每对十六进制数字代表一个字符。

我不知道有任何方法可以克服这个限制。如果你有奇数位数,你可能想要用数字填充数字。