为什么 MySQL 有时会为 BINARY 列添加一个前导零,我该如何让它停止?
Why does MySQL sometimes add a leading zero for BINARY column, and how do I make it stop?
我在 MySQL 数据库中有一个 BINARY(255) 列,我需要它能够准确地存储我放入的二进制数据。
如果我 运行 查询 (UPDATE table SET bindata = 0xffff WHERE id = 1),数据出现前导零 (0ffff0000)。但是,如果我在 0x 之后添加了足够多的字符(显然是 102?),前导零就会消失并且插入的值会正确显示。
为什么会发生这种情况,如何让它停止?
正如 mysql 关于 hexadecimal literals 的文档所说:
Values written using 0xval
notation that contain an odd number of digits are treated as having an extra leading 0. For example, 0xaaa
is interpreted as 0x0aaa
.
Mysql 也支持 X'val'
表示法,但如果字面量为奇数位数,则会引发语法错误。
这个限制的原因很简单:
By default, a hexadecimal literal is a binary string, where each pair of hexadecimal digits represents a character.
我不知道有什么方法可以克服这个限制。如果您的数字是奇数,您可能需要用 0 向右填充数字。
我在 MySQL 数据库中有一个 BINARY(255) 列,我需要它能够准确地存储我放入的二进制数据。
如果我 运行 查询 (UPDATE table SET bindata = 0xffff WHERE id = 1),数据出现前导零 (0ffff0000)。但是,如果我在 0x 之后添加了足够多的字符(显然是 102?),前导零就会消失并且插入的值会正确显示。
为什么会发生这种情况,如何让它停止?
正如 mysql 关于 hexadecimal literals 的文档所说:
Values written using
0xval
notation that contain an odd number of digits are treated as having an extra leading 0. For example,0xaaa
is interpreted as0x0aaa
.
Mysql 也支持 X'val'
表示法,但如果字面量为奇数位数,则会引发语法错误。
这个限制的原因很简单:
By default, a hexadecimal literal is a binary string, where each pair of hexadecimal digits represents a character.
我不知道有什么方法可以克服这个限制。如果您的数字是奇数,您可能需要用 0 向右填充数字。