Sqlite 具有 blob 数据类型,它将数据存储为十六进制字符串。您可以使用 x'<hexadecimal numbers>'
符号编写
blob literals。
关于这个的文档:
BLOB 文字是包含十六进制数据并以单个“x”或“X”字符开头的字符串文字。示例:X'53514C697465'
通过这种方式,您可以在 sqlite CLI 中编写示例
sqlite> SELECT x'313233';
123
sqlite>
因为 SQLite 会自动将十六进制数 31-32-33 转换为对应的 ASCII 十进制数 49、50 和 51,即“1”、“2”和“3”。
现在,作为我从其他人维护的测试套件的一部分,有一个使用
x'007800'
并声称它是某种 NULL 值的测试。
事实上,在 sqlite 控制台中运行该值不会返回任何结果:
sqlite> SELECT x'007800';
sqlite>
我有点困惑那个十六进制背后的含义是什么(?)。谷歌搜索,我找不到那个特定数字的特殊含义。它似乎是
"\0x\0"
的代表,我同样无法从中提取任何含义。
x'007800'
和/或"\0x\0"
是什么意思?
x'007800' 和/或“x”是什么意思?
blob字面量
x'007800'
表示十六进制的三个字节00、78、00,
等于 ASCII 字符 null (\0)
和 x
.
你可以参考这里的表格.
CharacterName Char Code Decimal Binary Hex
Null NUL Ctrl@ 0 00000000 00
Lower-case X x X 120 01111000 78