0

在我的表中,我有一个JSON字段,该字段具有一个带有键值的对象,其中一些值是数组。JSON_CONTAINS_PATH分别使用和来验证是否存在单个键或者是否存在具有指定值的键很容易JSON_EXTRACT,但是我需要更进一步。

我需要找到一个具有指定键和值的数组元素(对象),同时检查另一个指定的键是否不存在或者它是否存在并且具有错误的值。

我一直在尝试JSON_CONTAINS_PATHJSON_EXTRACT和的组合JSON_CONTAINS

例如:

mysql> SET @j = '{"data": [{"a": "abc", "b": true}, {"a": "123"}]}';
mysql> SELECT * FROM db.table WHERE JSON_CONTAINS(@j->>"$.data", JSON_OBJECT('a', 'abc', 'b', true))
+--------------+
| RESULT:    1 |
+--------------+

上面的效果很好,但是如果我尝试将其应用于{"a": "123"}返回的第二个对象00通常会是一个有效的响应,但我们目前使用的"b"EXISTS && TRUE,EXISTS && FALSENOT EXISTS. 前两个适用于上面的示例,但我无法找到一种方法来验证是否使用由提供"a" = "abc" && "b" NOT EXISTS的当前JSON 函数MySQL

另外,我试过了,我也试过JSON_CONTAINS(@j->>"$.data", JSON_OBJECT('a', 'abc', 'b', NULL))了,没有用。

4

0 回答 0