我已经安装了 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 字段很陌生。在不知道项目内的“索引号”的情况下如何查询数据库? 非常感谢!
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 |