如何在不完全读取blob的情况下测试sqlite表中的blob是否不为null?
我正在尝试查询具有blob列的表,并且需要过滤结果以仅提供blob列中包含内容(任何内容)的行 但是,执行如何在不完全读取blob的情况下测试sqlite表中的blob是否不为null?,sql,sqlite,blob,Sql,Sqlite,Blob,我正在尝试查询具有blob列的表,并且需要过滤结果以仅提供blob列中包含内容(任何内容)的行 但是,执行从blob\u column不为NULL的表\u name中选择column\u name需要很长时间,我认为这是由于一些blob相当重。WHERE子句似乎正在读取blob的全部内容,并将它们与null进行比较 有没有一种方法可以在不让sqlite读取blob的全部内容的情况下测试blob列是否为null?因为使用or函数可以避免读取二进制数据(查询速度更快)。因此,为了避免不必要的开销,必
从blob\u column不为NULL的表\u name中选择column\u name需要很长时间,我认为这是由于一些blob相当重。WHERE子句似乎正在读取blob的全部内容,并将它们与null
进行比较
有没有一种方法可以在不让sqlite读取blob的全部内容的情况下测试blob列是否为null?因为使用or函数可以避免读取二进制数据(查询速度更快)。因此,为了避免不必要的开销,必须进行更改
SELECT column_name FROM table_name WHERE blob_column IS NOT NULL
到
或
使用sqlite3\u blob\u read()
成功时返回SQLITE_OK。否则,会出现一个错误代码中有一个相关问题,询问者希望得到水滴的实际大小,而不仅仅是它是否为空。哇!这是非常不直观的。
SELECT column_name FROM table_name WHERE LENGTH(blob_column) IS NOT NULL
SELECT column_name FROM table_name WHERE TYPEOF(blob_column) != 'null'