首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中具有多个值的JSON查询

MySQL中具有多个值的JSON查询
EN

Stack Overflow用户
提问于 2021-07-01 12:39:04
回答 1查看 1.4K关注 0票数 0

MySQL版本: 5.7.29

我有一个带有JSON数据类型的列layout_status,它包含一些值的数组,如:

代码语言:javascript
复制
["Layouted"]
["Retired"]
["Verified"]
["Layouted", "Retired"]
["Layouted", "Verified"]

我想要选择的记录包含“布局”或“退休”或两者兼而有之。

我认为在中执行(比如SELECT * FROM users WHERE layout_status IN ('[\"Layouted\",\"Retired\"]'); )可以解决问题,但它返回的结果为零。

稍后,我尝试使用JSON_CONTAINS,如下所示

代码语言:javascript
复制
SELECT * 
  FROM users
  WHERE ( JSON_CONTAINS(layout_status, "[\"Layouted\"]")
  OR      JSON_CONTAINS(layout_status, "[\"Retired\"]")
        )

但是,通过上面的查询,我得到的记录要么是“布局”,要么是“退役”。带有“布局”、“退休”的记录将被忽略。

是否有任何方法可以获得所有包含“被解雇”或“退休”的记录,或者两者都包含?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-01 12:49:24

您需要正确地使用JSON_CONTAINS。您希望在数组中搜索字符串,而不是在数组中搜索数组:

代码语言:javascript
复制
WHERE JSON_CONTAINS(layout_status, '"Layouted"')
OR    JSON_CONTAINS(layout_status, '"Retired"')

Demo on db<>fiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68210368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档