Jay*_*iar 7 mysql sql json mysql-json
这是一个示例数据库“test”,其中包含一个包含 JSON 对象数组的 JSON 列“arr”
+----+----------------------------------------------------------+
| id | arr |
+----+----------------------------------------------------------+
| 1 | [{"name": "aman"}, {"name": "jay"}] |
| 2 | [{"name": "yash"}, {"name": "aman"}, {"name": "jay"}] |
+----+----------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
我想使用 JSON_CONTAINS 来了解数组中对象的特定键中是否存在值。
这是我的查询:
SELECT JSON_CONTAINS(arr, '"jay"', '$[*].name') from test WHERE id=1;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误 3149 (42000):在这种情况下,路径表达式可能不包含 * 和 ** 标记或数组范围。
我知道我可以尝试使用JSON_EXTRACT()
这个,但是我在这里做错了什么?
有没有办法JSON_CONTAINS
在 MySQL 中使用 JSON 对象数组。
Luk*_*zda 12
是的,可以使用以下语法:
SELECT JSON_CONTAINS(arr, '{"name": "jay"}') from test WHERE id=1;
Run Code Online (Sandbox Code Playgroud)
例子:
+-----+--------------------------------------------------------+---+
| id | arr | r |
+-----+--------------------------------------------------------+---+
| 1 | [{"name": "aman"}, {"name": "jay"}] | 1 |
| 2 | [{"name": "yash"}, {"name": "aman"}, {"name": "jay"}] | 1 |
| 3 | [{"name": "yash"}, {"name": "aman"}] | 0 |
+-----+--------------------------------------------------------+---+
Run Code Online (Sandbox Code Playgroud)