MySQL版本: 5.7.29
我有一个带有JSON数据类型的列layout_status,它包含一些值的数组,如:
["Layouted"]
["Retired"]
["Verified"]
["Layouted", "Retired"]
["Layouted", "Verified"]我想要选择的记录包含“布局”或“退休”或两者兼而有之。
我认为在中执行(比如SELECT * FROM users WHERE layout_status IN ('[\"Layouted\",\"Retired\"]'); )可以解决问题,但它返回的结果为零。
稍后,我尝试使用JSON_CONTAINS,如下所示
SELECT *
FROM users
WHERE ( JSON_CONTAINS(layout_status, "[\"Layouted\"]")
OR JSON_CONTAINS(layout_status, "[\"Retired\"]")
)但是,通过上面的查询,我得到的记录要么是“布局”,要么是“退役”。带有“布局”、“退休”的记录将被忽略。
是否有任何方法可以获得所有包含“被解雇”或“退休”的记录,或者两者都包含?
发布于 2021-07-01 12:49:24
您需要正确地使用JSON_CONTAINS。您希望在数组中搜索字符串,而不是在数组中搜索数组:
WHERE JSON_CONTAINS(layout_status, '"Layouted"')
OR JSON_CONTAINS(layout_status, '"Retired"')https://stackoverflow.com/questions/68210368
复制相似问题