我在mysql数据库中有一个二进制(255)列,我需要它能够准确地存储二进制数据。如果我运行查询(update table set bindata=0xffff,其中id=1),数据将以前导零(0ffff0000)出现。但是,如果在0x(显然是102?)之后添加足够的字符,前导零将消失,插入的值将正确显示。为什么会发生这种情况,我该如何阻止它?
brtdzjyr1#
正如mysql关于十六进制文字的文档所说:使用编写的值 0xval 包含奇数位数的表示法被视为具有额外的前导0。例如, 0xaaa 被解释为 0x0aaa .mysql还支持 X'val' 表示法,但如果文本的位数为奇数,则会引发语法错误。限制的原因很简单:默认情况下,十六进制文字是一个二进制字符串,其中每对十六进制数字表示一个字符。我不知道有什么方法可以克服这个限制。如果数字为奇数,您可能需要用0右键填充数字。
0xval
0xaaa
0x0aaa
X'val'
1条答案
按热度按时间brtdzjyr1#
正如mysql关于十六进制文字的文档所说:
使用编写的值
0xval
包含奇数位数的表示法被视为具有额外的前导0。例如,0xaaa
被解释为0x0aaa
.mysql还支持
X'val'
表示法,但如果文本的位数为奇数,则会引发语法错误。限制的原因很简单:
默认情况下,十六进制文字是一个二进制字符串,其中每对十六进制数字表示一个字符。
我不知道有什么方法可以克服这个限制。如果数字为奇数,您可能需要用0右键填充数字。