我有一个类似这样的对象的 json 列表
[{
"something": "bla",
"id": 2
}, {
"something": "yes",
"id": 1
}]
我的 NHẬN DẠNG
字段始终是一个数值。但是当我尝试查找 id = 2
时,MySQL 返回 NULL
select
json_search(
json_extract(
'[{"something": "bla" ,"id": 2}, {"something": "yes","id": 1}]',
"$[*].id"
),
'one',
2
) as json_search;
json_search |
------------|
|
当我在 json NHẬN DẠNG
对象中使用字符串作为值而不是数值时,我得到了索引为 0 的结果。
select
json_search(
json_extract(
'[{"something": "bla" ,"id": "2"}, {"something": "yes","id": 1}]',
"$[*].id"
),
'one',
"2"
) as json_search;
json_search |
------------|
"$[0]" |
我正在使用 MySQL 5.7.17
@@version |
-----------|
5.7.17-log |
mysql没有提供json数组的数值搜索吗?
您可以尝试一些复杂的、不直观的并且可能有性能问题的东西,但这是一个选择:
mysql> SELECT JSON_SEARCH(
-> REPLACE(
-> REPLACE(
-> REPLACE(
-> JSON_EXTRACT('[
'> {"something": "bla" ,"id": 2},
'> {"something": "yes","id": 1}
'> ]', "$[*].id"),
-> ', ', '","'),
-> '[', '["'),
-> ']', '"]'),
-> 'one', '2') `json_search`;
+-------------+
| json_search |
+-------------+
| "$[0]" |
+-------------+
1 row in set (0.00 sec)
Tôi là một lập trình viên xuất sắc, rất giỏi!