sql - 使用查询调用 db 中的 json 数组数据
解决方案
如果安装了JSON 扩展,是的,您可以使用json_each
. 那是一个 table_valued_function,所以它被当作一个表来对待。
您可能希望SELECT * from ahoy_events,json_each(properties)
在 sqlite 浏览器中执行以感受数据。
就像是:
SELECT value as listing
from ahoy_events,json_each(properties)
where key = 'listing_id'
应该列出 id(值)
[编辑]
如果 JSON 扩展不可用,您可以尝试使用SQLite 核心函数 substr
、instr
和length
。
:
在和之间可以看到属性列的值部分}
。是:
在位置instr(properties,':')
。
substr(properties,instr(properties,':') + 1,length(properties)-instr(properties,':') - 1)
从文档中,“ substr(X,Y,Z) 函数返回输入字符串 X 的子字符串,该子字符串以第 Y 个字符开头,长度为 Z 个字符。 '
Y 是instr(properties,':') + 1
,即 之后的字符:
。Z 是length(properties)-instr(properties,':') - 1)
您可以substr
在 SELECT 或 WHERE 中使用。
另一个想法:如果该properties
列始终是单值的,正如数据似乎显示的那样,只将“值”插入到数据库的属性列中不是更容易吗?或者添加一个新listing_id
列。该方法适用于如图所示的结构化数据,我不知道生产数据将如何结构化。
推荐阅读
- inform7 - 在 Inform 7 中,进入容器的反义词是什么?
- mysql - MySQL问题找到当前薪酬最高的员工
- json - 如何加载json并提取到neo4j中的单独节点
- java - 我在 while 循环中有一个 for 循环,但没有到达
- python-3.x - 创建一个烧瓶应用程序以从 python3 中的 xlsx 文件返回字典列表
- javascript - Nodejs - 使用 Brightcove 生成的签名 URL 将文件上传到 AWS W3 返回 403 Forbidden
- azure-devops - 在多阶段 Azure DevOps Yamls 上迭代插入依赖和条件
- php - 使用逗号分隔行中的数据执行连接
- java - 如何使用 for 在字符串中进行迭代替换每个字符(A 与 T,T,A,G 与 C,C 与 G)?
- sql - 有没有类似于 Pandas tail() 的 SQLite 函数