gpt4 book ai didi

Mysql - 如何比较两个 Json 对象?

转载 作者:IT王子 更新时间:2023-10-28 23:44:29 25 4
gpt4 key购买 nike

将整个 MySql json 列与 json 对象进行比较的语法是什么?

以下不起作用:

select count(criteria) from my_alerts where criteria = '{"industries": ["1"], "locations": ["1", "2"]}'

即使条件列的值为 {"industries": ["1"], "locations": ["1", "2"]},我的计数也为 0 p>

如果我错了请纠正我,但是如果两个 JSON 对象具有相同的键集并且每个键在两个对象中具有相同的值,则它们是相等的。忽略键和值的顺序。那么下面应该是一样的吧?

 {"industries": ["1"], "locations": ["1", "2"]} = {"locations": ["2", "1"], "industries": ["1"]}

* 更新 *

我已经设法通过转换为 json 来让它工作,如下所示:

select count(criteria) from my_alerts where criteria = CAST('{"industries": ["1"], "locations": ["1", "2"]}' AS JSON)

然而,虽然在比较过程中忽略了键的顺序,但仍然比较了值的顺序。所以以下是虚假的:

{"locations": ["1", "2"]} = {"locations": ["2", "1"]}

有没有办法强制比较忽略值的顺序?

最佳答案

您可以使用 JSON_CONTAINS 来做到这一点:

SELECT COUNT(criteria) 
FROM my_alerts
WHERE JSON_CONTAINS(criteria,'{"industries": ["1"], "locations": ["1", "2"]}')

这将执行忽略值顺序的比较,这很关键,因为 MySQL 将重新排序 JSON 属性以提高 INSERT 的效率。

关于Mysql - 如何比较两个 Json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44767211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com