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

15

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

{
 "data": {
  "12":"1920293"
 }
}

我正在尝试使用MySQL查询:

select sent->"$.data.12" from mytable
但我收到一个异常:
Invalid JSON path expression. The error is around character position 9.

你有任何想法如何提取这些信息吗?对于非数字子字段,查询效果不错。


2
尝试使用 "$.data.\"12\"" - wchiquito
尝试使用函数 JSON_CONTAINS - FDavidov
@wchiquito,它不起作用。它将字符串' "12" '视为键。 - moghya
这似乎是mysql引擎中的一个错误,因为我在这里https://www.db-fiddle.com/f/bLUtMxWwAH9A2hT7LEaATS/0收到了“错误:UNKNOWN_CODE_PLEASE_REPORT:” - moghya
@wchiquito 它也这样工作了。谢谢! - Ibrahim Lawal
1个回答

19

@Ibrahim,你的代码中有一个错误。如果在MySQL中使用数字(或带空格的单词)作为JSON数据类型的键,则需要用双引号进行引用。

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

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

谢谢,@JeffreyKilelo


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接