为什么mysql有时会为二进制列添加前导零,如何使其停止?

nbysray5  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(308)

我在mysql数据库中有一个二进制(255)列,我需要它能够准确地存储二进制数据。
如果我运行查询(update table set bindata=0xffff,其中id=1),数据将以前导零(0ffff0000)出现。但是,如果在0x(显然是102?)之后添加足够的字符,前导零将消失,插入的值将正确显示。
为什么会发生这种情况,我该如何阻止它?

brtdzjyr

brtdzjyr1#

正如mysql关于十六进制文字的文档所说:
使用编写的值 0xval 包含奇数位数的表示法被视为具有额外的前导0。例如, 0xaaa 被解释为 0x0aaa .
mysql还支持 X'val' 表示法,但如果文本的位数为奇数,则会引发语法错误。
限制的原因很简单:
默认情况下,十六进制文字是一个二进制字符串,其中每对十六进制数字表示一个字符。
我不知道有什么方法可以克服这个限制。如果数字为奇数,您可能需要用0右键填充数字。

相关问题