MySQL JSON_EXTRACT 路径表达式错误

Posted

技术标签:

【中文标题】MySQL JSON_EXTRACT 路径表达式错误【英文标题】:MySQL JSON_EXTRACT path expression error 【发布时间】:2016-06-14 14:40:23 【问题描述】:

语法对我来说是正确的,任何帮助将不胜感激!

mysql> select fieldnames from tablename limit 5;
+--------------------------------------------------------+
| fieldnames                                             |
+--------------------------------------------------------+
| "example-field-1": "val2"                            |
| "example-field-2": "val1"                            |
| "example-field-1": "val1", "example-field-3": "val1" |
| "example-field-2": "val1"                            |
| "example-field-2": "val2"                            |
+--------------------------------------------------------+
mysql> select JSON_EXTRACT(fieldnames, '$.example-field-1') from tablename;
ERROR 3143 (42000): Invalid JSON path expression. The error is around character position 17 in '$.example-field-1'.

MySQL 5.7.10

【问题讨论】:

【参考方案1】:

你可以试试https://dev.mysql.com/doc/refman/5.7/en/json.html的这个建议

如前所述,命名键的路径组件必须用引号引起来 如果不带引号的键名在路径表达式中不合法。让 $ 参考 到这个值。

select JSON_EXTRACT(fieldnames, '$."example-field-1"') from tablename;

注意

如果您有更多字段,则必须引用每个键而不是整个路径:

select JSON_EXTRACT(fieldnames, '$."field"."example-field-1"') from tablename;

【讨论】:

谢谢!就是这样。引号内的引号。 我真的希望 Mysql 文档能更多地强调这一点。这个答案确实让我免于陷入困境。

以上是关于MySQL JSON_EXTRACT 路径表达式错误的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据类型 - JSON数据类型

MySQL LIKE 与 json_extract

mysql中json_extract函数的使用?作用是什么?

将使用 JSON_EXTRACT 的查询从 MySQL 转换为 BigQuery

where子句中的mysql udf json_extract - 如何提高性能

where子句中的mysql udf json_extract - 如何提高性能