Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用MySQL JSON函数,传入表示数字属性的路径_Mysql_Json - Fatal编程技术网

调用MySQL JSON函数,传入表示数字属性的路径

调用MySQL JSON函数,传入表示数字属性的路径,mysql,json,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\u无效的JSON\u路径:无效的JS

我有一个JSON块,其中属性是一个数字。例如
{“123”:“1”}
。但我似乎无法让它与MySQL的JSON_CONTAINS函数配合使用。我还尝试了JSON_CONTAINS_PATH函数,得到了相同的结果

以下工作:

SELECT JSON_CONTAINS('{"a": 1}', '1', '$.a');
但是下面给了我一个错误:

SELECT JSON_CONTAINS('{"123": 1}', '1', '$.123');
查询错误:错误:ER\u无效的JSON\u路径:无效的JSON路径表达式。错误在字符位置5附近

我已经阅读了文档:,但提供的示例仅使用字符串作为属性


一定有办法做到这一点。我使用的是MySQL 8.0.11

您可以使用以下双引号作为密钥名:

SELECT JSON_CONTAINS('{"123": 1}', '1', '$."123"');
对于MySQL JSON函数中使用的路径,作用域始终是正在搜索或以其他方式操作的文档,由前导$字符表示。路径分支由句点字符(.)分隔。数组中的单元格由
[N]
表示,其中
N
是非负整数。键的名称必须是双引号字符串或有效的ECMAScript标识符(请参阅)

来源:


后跟键名的句点使用给定键命名对象中的成员。如果不带引号的名称在路径表达式中不合法(例如,如果包含空格),则必须在双引号内指定键名

来源:


谢谢,成功了。我知道这很简单。我希望MySQL文档至少有一个这样的例子。会为我节省一些时间;)