JSON_CONTAINS() 在 MySQL 中包含 JSON 个对象数组
JSON_CONTAINS() with an array of JSON objects in MySQL
这是一个示例数据库 'test',其中 JSON 列 'arr' 包含 JSON 个对象的数组
+----+----------------------------------------------------------+
| id | arr |
+----+----------------------------------------------------------+
| 1 | [{"name": "aman"}, {"name": "jay"}] |
| 2 | [{"name": "yash"}, {"name": "aman"}, {"name": "jay"}] |
+----+----------------------------------------------------------+
我想使用 JSON_CONTAINS 来了解值是否存在于数组中对象的特定键中。
这是我的查询:
SELECT JSON_CONTAINS(arr, '"jay"', '$[*].name') from test WHERE id=1;
我收到以下错误:
ERROR 3149 (42000): In this situation, path expressions may not contain the * and ** tokens or an array range.
我知道我可以尝试为此使用 JSON_EXTRACT()
,但我在这里做错了什么?
有什么方法可以将 JSON_CONTAINS
与 MySQL 中的 JSON 个对象数组一起使用吗?
是的,可以使用以下语法:
SELECT JSON_CONTAINS(arr, '{"name": "jay"}') from test WHERE id=1;
示例:
+-----+--------------------------------------------------------+---+
| id | arr | r |
+-----+--------------------------------------------------------+---+
| 1 | [{"name": "aman"}, {"name": "jay"}] | 1 |
| 2 | [{"name": "yash"}, {"name": "aman"}, {"name": "jay"}] | 1 |
| 3 | [{"name": "yash"}, {"name": "aman"}] | 0 |
+-----+--------------------------------------------------------+---+
您必须使用 JSON_SEARCH:
SELECT JSON_SEARCH(arr, 'one', 'jay', NULL, '$[*].name') IS NOT NULL
FROM test
WHERE id=1;
这是一个示例数据库 'test',其中 JSON 列 'arr' 包含 JSON 个对象的数组
+----+----------------------------------------------------------+
| id | arr |
+----+----------------------------------------------------------+
| 1 | [{"name": "aman"}, {"name": "jay"}] |
| 2 | [{"name": "yash"}, {"name": "aman"}, {"name": "jay"}] |
+----+----------------------------------------------------------+
我想使用 JSON_CONTAINS 来了解值是否存在于数组中对象的特定键中。
这是我的查询:
SELECT JSON_CONTAINS(arr, '"jay"', '$[*].name') from test WHERE id=1;
我收到以下错误:
ERROR 3149 (42000): In this situation, path expressions may not contain the * and ** tokens or an array range.
我知道我可以尝试为此使用 JSON_EXTRACT()
,但我在这里做错了什么?
有什么方法可以将 JSON_CONTAINS
与 MySQL 中的 JSON 个对象数组一起使用吗?
是的,可以使用以下语法:
SELECT JSON_CONTAINS(arr, '{"name": "jay"}') from test WHERE id=1;
示例:
+-----+--------------------------------------------------------+---+
| id | arr | r |
+-----+--------------------------------------------------------+---+
| 1 | [{"name": "aman"}, {"name": "jay"}] | 1 |
| 2 | [{"name": "yash"}, {"name": "aman"}, {"name": "jay"}] | 1 |
| 3 | [{"name": "yash"}, {"name": "aman"}] | 0 |
+-----+--------------------------------------------------------+---+
您必须使用 JSON_SEARCH:
SELECT JSON_SEARCH(arr, 'one', 'jay', NULL, '$[*].name') IS NOT NULL
FROM test
WHERE id=1;