如何查询SQLite表中JSON列position值为3的数据行
SQLite查询JSON列指定键匹配值的实现方法
SQLite 启用JSON1扩展(3.9.0及以上版本默认编译开启,3.38.0版本新增便捷箭头操作符)后,可以通过内置JSON函数直接解析字段内的JSON内容完成过滤,不需要把数据拉到业务层处理。
假设你的数据表名为your_table,存储JSON数据的列名为json_column,可根据实际表名、列名替换语句中对应部分:
- 通用兼容写法(支持所有启用JSON1扩展的SQLite版本):
SELECT * FROM your_table WHERE json_extract(json_column, '$.position') = '3';
注意:你给出的JSON示例中
position对应的值是带双引号的字符串类型"3",所以匹配值要加单引号写为'3';如果该字段实际存储的是无引号的数值类型3,去掉单引号写为= 3即可,类型不匹配会导致查询结果为空。
- 简洁写法(支持3.38.0及以上版本):
SELECT * FROM your_table WHERE json_column->>'position' = '3';
->>操作符的作用是直接提取指定键的文本值,效果等价于json_extract返回文本类型结果。
如果执行语句时报no such function: json_extract错误,说明你当前使用的SQLite版本过低或者编译时未开启JSON1扩展,升级SQLite到最新稳定版即可解决。
内容的提问来源于stack exchange,提问作者Sunday Lalbiaknia
相关产品推荐
相关产品推荐

