【发布时间】:2021-09-17 09:14:55
【问题描述】:
我在 MYSQL 8 的 JSON 列中搜索值时遇到问题。
目标是选择至少一个市场的值为真的所有记录,请参阅下面的列值可能的示例。
{"at": false, "au": false, "be": false, "ch": false, "cz": false, "de": false, "dk": false, "es": false, "eu": false, "fi": false, "fr": false, "gl": false, "hk": false, "it": false, "jp": false, "kr": false, "nl": false, "no": false, "se": false, "uk": true, "us": false}
我们尝试过使用 JSON_CONTAINS 和 JSON_SEARCH,但结果为 0(无法包含我们尝试过的所有查询,因为我们没有保存它们)。似乎也找不到任何尝试使用类似结构化的对象/查询来执行此操作的人。在 MySQL 中是否可以进行此查询?
我们希望的原始查询可以工作:
SELECT *
FROM
`redirects`
WHERE
JSON_CONTAINS(`synced_markets`, 'true')
更新
我们设法破解了它,因为我们只关心通过将其转换为字符是否至少有一个是真的,但感觉这不是一个合适的解决方案。
WHERE CAST(`synced_markets` AS CHAR) LIKE '%true%'
【问题讨论】: