mysql - 调用 MySQL JSON 函数,传入表示数字属性的路径
问题描述
我有一个 JSON 块,其中一个属性是一个数字。例如{"123": "1"}
. 但我似乎无法让它与 MySQL 的JSON_CONTAINS函数一起使用。我还尝试了具有相同结果的JSON_CONTAINS_PATH函数。
以下作品:
SELECT JSON_CONTAINS('{"a": 1}', '1', '$.a');
但是以下给了我一个错误:
SELECT JSON_CONTAINS('{"123": 1}', '1', '$.123');
查询错误:错误:ER_INVALID_JSON_PATH:无效的 JSON 路径表达式。错误在字符位置 5 附近。
我已经阅读了文档:https ://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#function_json-contains ,但提供的示例仅使用字符串作为属性。
必须有办法做到这一点。我正在使用 MySQL 8.0.11
解决方案
您可以使用以下双引号将密钥名称:
SELECT JSON_CONTAINS('{"123": 1}', '1', '$."123"');
对于 MySQL JSON 函数中使用的路径,范围始终是正在搜索或以其他方式操作的文档,由前导 $ 字符表示。路径腿由句点字符 (.) 分隔。数组中的单元格由 表示
[N]
,其中N
是一个非负整数。键名必须是双引号字符串或有效的 ECMAScript 标识符(参见http://www.ecma-international.org/ecma-262/5.1/#sec-7.6)。来源: https ://dev.mysql.com/doc/refman/8.0/en/json.html#json-path-syntax
后跟键名的句点使用给定键命名对象中的成员。如果不带引号的名称在路径表达式中不合法(例如,如果它包含空格),则必须在双引号内指定键名称。
来源: https ://dev.mysql.com/doc/refman/8.0/en/json.html#json-paths
推荐阅读
- php - Add custom field within post text?
- javascript - 带有onkeyup事件的Javascript搜索栏不起作用
- javascript - How to prevent duplicate rows from being displayed in html?
- sql - Oracle SQL:使用 to_date 时输出错误的年份
- python - Keras 中 Adadelta 优化器中的学习率参数是什么?
- python - Pyttsx 未在 Windows 10 上显示已安装的语言
- kubernetes - 获取 PreStop 生命周期钩子执行结果
- php - 如何获得通过 SMTP 协议发送电子邮件的结果?
- android - 焦点不会自动转移到下一个edittext?
- javascript - 如何在车把文件中打印“body”元素?