如何从 MySQL 中的数字键嵌套 JSON 字段中提取值

Posted

技术标签:

【中文标题】如何从 MySQL 中的数字键嵌套 JSON 字段中提取值【英文标题】:How to extract values from a numeric-keyed nested JSON field in MySQL 【发布时间】:2018-09-08 11:24:02 【问题描述】:

我有一个 mysql 表,其中包含一个名为 sent 的 JSON 列。该列中的条目具有如下信息:


 "data": 
  "12":"1920293"
 

我正在尝试使用 mysql 查询:

select sent->"$.data.12" from mytable

但我得到一个例外:

Invalid JSON path expression. The error is around character position 9.

知道如何提取信息吗?该查询适用于非数字子字段。

【问题讨论】:

试试"$.data.\"12\"" 尝试使用函数JSON_CONTAINS @wchiquito 它不起作用。它将字符串' "12" ' 视为键 这似乎是 mysql 引擎中的错误,因为我在这里得到 Error: UNKNOWN_CODE_PLEASE_REPORT: db-fiddle.com/f/bLUtMxWwAH9A2hT7LEaATS/0 @wchiquito 它的工作原理也是如此。谢谢! 【参考方案1】:

@易卜拉欣, 您的代码中有错误。如果您在 MySQL 中使用数字(或空格词)作为 JSON 数据类型的键,则需要双引号。

因此,在您的情况下,正确的 MySQL 语句是:

select sent->'$.data."12"' FROM mytable;

谢谢, @JeffreyKilelo

【讨论】:

以上是关于如何从 MySQL 中的数字键嵌套 JSON 字段中提取值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AWS Glue 从嵌套 json 字段/结构中的 DynamicFrame 访问数据

如何解析嵌套 JSON 结果中的动态 JSON 键?

如何从嵌套的 json 中读取字段?

通过嵌套json递归迭代python中的特定键

如何仅显示嵌套 JSON 中的特定字段

如何使用 mysql 本机 json 函数生成嵌套的 json 对象?