sql - 如何在不完全读取 blob 的情况下测试 sqlite 表中的 blob 是否不为空?

标签 sql sqlite blob

我正在尝试查询具有 blob 列的表,并且需要过滤结果以仅提供在 blob 列中具有内容(任何内容)的行。

但是,执行 SELECT column_name FROM table_name WHERE blob_column IS NOT NULL 需要很长时间,我认为这是因为一些 blob 非常重。似乎 WHERE 子句正在读取 blob 的全部内容并将它们与 null 进行比较。

有没有一种方法可以在不让 sqlite 读取 blob 的全部内容的情况下测试 blob 列是否为空?

最佳答案

version 3.7.12 , 使用 length()typeof()函数避免读取二进制数据(查询要快得多)。所以为了避免不必要的开销,必须改变

SELECT column_name FROM table_name WHERE blob_column IS NOT NULL

SELECT column_name FROM table_name WHERE LENGTH(blob_column) IS NOT NULL

SELECT column_name FROM table_name WHERE TYPEOF(blob_column) != 'null'

关于sql - 如何在不完全读取 blob 的情况下测试 sqlite 表中的 blob 是否不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43518213/

相关文章:

sql - 如何将多个重复行转换为 SQL (Postgres) 中的数组?

SQLite优化多选插入

c++ - 从以 blob 数据类型存储在数据库中的原始图像数据中检索 CImage 对象

c# - 将字符串数据插入 blob

sql - 如何将值发送到工作表上数组公式中的自动连续行?

sql - 在 SQL 表的同一行中检索值

mysql - 通过多个表级联外键

android - 使用来自 sqlite DB 的图像动态填充 galleryview

android - 如果 ListView 中有另一个相同的单词,则只显示一个单词

java - 使用 Oracle 10g 中的 Java 1.4 将 docx 文件写入 BLOB