sqlite Blob文字x'007800'是什么意思?

问题描述 投票:0回答:1

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"
是什么意思?

sql sqlite hex
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.