可以通过使用JSON1扩展来查询存储在列中的JSON数据,是的:
sqlite> CREATE TABLE test(data TEXT);
sqlite> INSERT INTO test VALUES ('{"name":"john doe","balance":1000,"data":[1,73.23,18]}');
sqlite> INSERT INTO test VALUES ('{"name":"alice","balance":2000,"email":"a@b.com"}');
sqlite> SELECT * FROM test WHERE json_extract(data, '$.balance') > 1500;
data
--------------------------------------------------
{"name":"alice","balance":2000,"email":"a@b.com"}
如果您要查询大量相同的字段,可以通过在表达式上添加索引来提高效率:
CREATE INDEX test_idx_balance ON test(json_extract(data, '$.balance'));
将在上面的查询中使用该索引,而不是扫描每一行。