2

valueJSONタイプとして次のスキーマがあります

mysql> select * from people;
+------+---------------------------------------------------------------------------+
| id   | value                                                                     |
+------+---------------------------------------------------------------------------+
| blah | {"key1": "value1", "key2": "value2"}                                      |
| foo  | {"key1": "value1", "friends": [{"friendId": "123"}, {"friendId": "foo"}]} |
+------+---------------------------------------------------------------------------+

以下のクエリで行fooが返されると思っていましたが、返されませんでした。

mysql> select * from people where value->'$.friends[*].friendId' = "123";
Empty set 

value->'$.friends[*].friendId'以下のクエリで機能するため、条件は有効と思われます。

mysql> select value->'$.friends[*].friendId' from people;
+---------------------------------+
| value->'$.friends[*].friendId' |
+---------------------------------+
| NULL                            |
| ["123", "foo"]                  |
+---------------------------------+

では、クエリselect * from people where value->'$.friends[*].friendId' = "123";が結果を返さないのはなぜでしょうか?

4

1 に答える 1