gpt4 book ai didi

mysql - 如何检查 JSON 是否包含字段并具有值 Sequelize MySQL (MariaDB)

转载 作者:行者123 更新时间:2023-11-29 17:46:48 24 4
gpt4 key购买 nike

我正在使用 Node.js Sequelize 和 MySQL (MariaDB) 数据库。

如何检查 JSON 字段是否包含指定字段且该字段是否有值?

我的专栏数据示例:

{
"a": true,
"b": true,
}

当定义了 b 并且他的值为 true 时,我只需要选择行

最佳答案

现在应该已经很老了,但我相信这个答案肯定会帮助那些使用没有 JSONB 数据类型的 MariaDB 或 MySql 寻找这个问题的人......尽管我也遇到了类似的挑战有点不同,经过几次搜索后我偶然发现了 Sequelize GitHub Issue - Op.contains fails on MySQL JSON arrays #8853并在 Sequelize Official Documentation 的帮助下我能够想出一个按预期工作的解决方案,在尝试将其转换为 Sequelize 之前,我必须确保我有一个可用的原始 sql 版本,下面应该是您预期解决方案的 sql 版本:


SELECT * FROM `table_name` where JSON_CONTAINS(data, '[{"b": true}]');

这是 Sequelize 解决方案;


const allData = await ModelName.findAll({
where: {
[Op.or]: [sequelize.fn('JSON_CONTAINS', sequelize.col('data'), `[{"b": true}]`)]
}
});

如果您不在 async 函数中,则可以使用 .then()。如果您有任何进一步的疑虑或者您在调整此解决方案以适应您的具体问题时遇到困难,请随时回复。

关于mysql - 如何检查 JSON 是否包含字段并具有值 Sequelize MySQL (MariaDB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49750568/

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