【问题标题】:MySQL select field from array of JSON objectsMySQL 从 JSON 对象数组中选择字段
【发布时间】:2017-08-14 09:19:01
【问题描述】:

所以我的数据库中有一个列 = foo_ids,其内容如下:
[{"id": "432"}, {"id": "433"}]

问题是什么查询将返回此字段中的所有 id 作为结果?

在几次尝试中,我最后一次是
SELECT JSON_EXTRACT(foo_ids,'$.id') FROM foo_table 但显然它没有用......有什么想法吗?

【问题讨论】:

  • 你运行的是什么版本的 MySQL?
  • mysql Ver 14.14 Distrib 5.5.44,适用于使用 readline 6.3 的 debian-linux-gnu (x86_64)
  • Unless otherwise indicated, the JSON functions were added in MySQL 5.7.8.,见12.16 JSON Functions
  • @83N 建议的解决方案对我有用

标签: mysql json


【解决方案1】:

如果您只想返回一个 ID 数组,您可以这样做:

SELECT JSON_EXTRACT(foo_ids, '$**.id') FROM foo_table;

* 通配符评估数组中的每个 json 对象。

【讨论】:

  • 有没有办法返回例如 id = 432 的数组?
  • 是的,按照 SELECT JSON_EXTRACT(foo_ids, '$**.id') FROM foo_table WHERE JSON_CONTAINS(foo_ids, '{ "id" : "432" }'); 的方式做一些事情 - 查看 MySQL 文档 here
  • 这仅适用于 id 是字符串而不是 int 的情况。 '{ "id" : "432" }' 会起作用,但 '{ "id" : 432 }' 不会,因为它会返回所有项目
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 2019-02-28
  • 1970-01-01
  • 2017-12-31
相关资源
最近更新 更多