首页 > 解决方案 > 在 SQLite 中搜索 blob 字段

问题描述

我的数据库中有存储 BLOB 的列。我想运行一个查询来检查表中是否存在特定的字节数组值。该值为b'\xf4\x8f\xc6{\xc2mH(\x97\x9c\x83hkE\x8b\x95'(python 字节)。

我试图运行这个查询:

SELECT * from received_message 
WHERE "EphemeralID" 
LIKE HEX('\xf4\x8f\xc6{\xc2mH(\x97\x9c\x83hkE\x8b\x95');

但是我得到 0 个结果,尽管我 100% 确定我将此值存储在数据库中。

我的查询有问题吗?

标签: sqlite

解决方案


你的搜索字符串有点奇怪——你似乎有一些复杂的东西,比如 { 和 (。也许你应该按照它的存储方式搜索 blob?

从 Sqlite 文档:

BLOB 文字是包含十六进制数据的字符串文字,前面有一个“x”或“X”字符。示例:X'53514C697465'

所以也许对你想要的十六进制值的 ascii 表示做一个喜欢?如果您的 sqlite 将其存储为大写,则可能从寻找 f48f 或 F48F 开始。


推荐阅读