Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.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_Sql_Json - Fatal编程技术网

mysql-在不一致的json结构中搜索密钥

mysql-在不一致的json结构中搜索密钥,mysql,sql,json,Mysql,Sql,Json,我知道一些函数,比如:JSON_搜索和JSON_提取等。这个问题是,我正在搜索未标准化的JSON字符串中的一个键。例如: 选择 * 从…起 使用者 结果可能是这样的: +---------------------------------------------+ | name | last | data | +------+------+-------------------------------+ | john | doe | {"

我知道一些函数,比如:JSON_搜索和JSON_提取等。这个问题是,我正在搜索未标准化的JSON字符串中的一个键。例如:

选择 * 从…起 使用者 结果可能是这样的:

+---------------------------------------------+
| name | last | data                          |
+------+------+-------------------------------+
| john | doe  | {"acctNum": "123"}            |
+------+------+-------------------------------+
| john | doe  | {"data":{ "acctNum": "123" }} |
+------+------+-------------------------------+
| jane | doe  | {"data":{ "acctNum": "1234" }}|
+------+------+-------------------------------+
所以在这个例子中,我想得到johndoe的acctNum为123。但是,acctNum密钥的位置也不同。我看到您可以使用:JSON_SEARCHdata,$**.acctNum,但我得到的结果是空的

在理想的世界里,我想要的是:

从JSON_提取数据的用户中选择*,$**.acctNum=123 接收

+---------------------------------------------+
| name | last | data                          |
+------+------+-------------------------------+
| john | doe  | {"acctNum": "123"}            |
+------+------+-------------------------------+
| john | doe  | {"data":{ "acctNum": "123" }} |
+------+------+-------------------------------+
此外,在上面的链接中,查找密钥acctNum可能是非常嵌套的


我曾尝试从数据regexp'123'所在的用户使用带有SELECT*的regexp;但是您可以想象,用户jane doe也将被匹配

在任何路径上搜索定义的值:

挑选* 来自用户 其中JSON_SEARCHdata'one',123;
在定义的路径上搜索定义的值:

挑选* 来自用户 其中JSON_SEARCHdata'one',123='$.acctNum';-或“$.data.acctNum” 在任意路径上搜索定义的属性名称和值:

挑选* 来自用户 其中JSON_SEARCHdata为'all',123,类似于'%.acctNum%';
在任意路径上搜索定义的值:

挑选* 来自用户 其中JSON_SEARCHdata'one',123;
在定义的路径上搜索定义的值:

挑选* 来自用户 其中JSON_SEARCHdata'one',123='$.acctNum';-或“$.data.acctNum” 在任意路径上搜索定义的属性名称和值:

挑选* 来自用户 其中JSON_SEARCHdata为'all',123,类似于'%.acctNum%';
谢谢你的快速回复。最初我有第一个解决方案,但是,它没有找到它。当我知道有4个条目时,仍然返回一个空集。在您更新了这个问题之后,对我有效的是第三个使用“%.acctNum%”之类的选项。非常感谢!谢谢你的快速回复。最初我有第一个解决方案,但是,它没有找到它。当我知道有4个条目时,仍然返回一个空集。在您更新了这个问题之后,对我有效的是第三个使用“%.acctNum%”之类的选项。非常感谢!