在不知道索引的情况下查询mysql JSON字段

问题描述 投票:0回答:1

我已经安装了 MySql 8.0.37-0ubuntu0.20.04.3 - (Ubuntu)。 我有一个名为 vendas_pendentes 的表,其中包含一个名为 venda 类型 JSON 的字段 我使用查询来搜索名为 order_reference 的键,如下所示:

select * from vendas_pendentes where venda->"$.data.items[*].order_reference" ='171972786245566' 

它什么也不返回,但是当我将 [*] 替换为 [102] 时,我得到了这一行。 我对 mysql 中的 json 字段很陌生。在不知道项目内的“索引号”的情况下如何查询数据库? 非常感谢!

mysql json
1个回答
0
投票

venda->"$.data.items[*].order_reference"
返回 JSON 数组。你尝试将它与给定的字符串文字进行比较,这显然是 FALSE。

您必须使用某些搜索功能来测试您的参考价值。请参阅搜索 JSON 值的函数

例如,使用 MEMBER OF(不是最佳):

CREATE TABLE test (val JSON)
SELECT '{"x":[{"y":1,"z":2},{"y":11,"z":22}]}' val UNION ALL
SELECT '{"x":[{"y":1,"z":2},{"y":111,"z":222}]}';
SELECT CAST(val AS CHAR),
       val->'$.x[*].y',
       11 MEMBER OF(val->'$.x[*].y')
FROM test;
CAST(val AS CHAR) val->'$.x[*].y' 11 成员 OF(val->'$.x[*].y')
{“x”:[{“y”:1,“z”:2},{“y”:11,“z”:22}]} [1, 11] 1
{“x”:[{“y”:1,“z”:2},{“y”:111,“z”:222}]} [1, 111] 0

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.