首页 > 解决方案 > 如何在数据库中查询 JSON

问题描述

我想从以这种格式创建的数据库中查询信息:

指数 标签 钥匙 数据
1 运动鞋 UPC {“尺寸”:“价值”,“颜色”:“价值”,“位置”:“货架2”}
2 地点 货架2 {“高度”:“值”,“行”:“值”,“列”:“值”}

其中大部分数据位于一个存储在 json 数组中的单元格中。让事情变得有点棘手,json 中的属性没有任何特定的顺序,有时它们会引用其他单元格。即,在上面的示例中,有一个“位置”属性在另一行中有更多数据。此外,有时数据单元格是一个多维数组,其中值嵌套在另一个 json 数组中。

我正在寻求执行某些查询任务,例如

业界公认的如何做到这一点的解决方案是什么?

这些是我目前使用DB Browser for SQLite来查询的 sqlite 数据库。如果存在更好的解决方案,绝对可以接受。

标签: sqljsonsqlite

解决方案


您的设计需要 SQLite 的JSON1 扩展

您在问题中提到的任务可以使用诸如json_extract().

查找所有有运动鞋的位置

SELECT t1.*
FROM tablename t1
WHERE t1.label = 'location'
  AND EXISTS (
    SELECT 1 
    FROM tablename t2
    WHERE t2.label = 'sneaker'
      AND json_extract(t2.data, '$.location') = t1.key
  )

查找具有特定颜色的所有运动鞋

SELECT *
FROM tablename
WHERE label = 'sneaker'
  AND json_extract(data, '$.color') = 'blue'

演示

对于更复杂的任务,例如从 json 数组中获取值,还有其他函数,例如json_each().


推荐阅读