MYSQL - 在 WHERE IN 子句中使用数组

在表中有一个 json 数组列,例如 ["A1", "A2", "B1"]。我想在 WHERE IN 子句中引用该数组。我无法将 json 数组评估为... WHERE tbl2.refID IN ("A1", "A2", "B1")。

SET @ref = replace(replace('["A1", "A2", "BI"]','[', ''), ']', ''); SELECT @ref;根据我的需要返回“A1”、“A2”、“B1”,但不能在... WHERE tbl2.refID IN (@ref)

那么如何评估要用作“WHERE IN”值的数组呢?

表格1

ID id 数组 其他校队
1 [“A1”、“A2”、“B1”]

表 2

ID refID 第 3 栏
1 A1 [ ]
2 A2 [ ]

使用 table1.col2 的元素我想从 table2 中选择和分组 col3。

希望我能更好地说明它!

我试图评估传递给 WHERE IN () 但不返回任何值的数组列。评估以某种方式被破坏。

WHERE tbl2.refID IN (replace(replace('["A1", "A2", "B1"]','[', ''), ']', ''));不评价

乔尔

如果值存在,您可以在 JSON 中搜索JSON_CONTAINS

例子

注意,JSON_CONTAINS这两个参数需要一个有效的 JSON,所以JSON_CONTAINS('["A1"]', 'A1')我们是无效的,因为A1它不是一个有效的 JSON 字符串表示。


对于哪里,你可以简单地做

WHERE JSON_CONTAINS('["A1", "A2", "BI"]', JSON_QUOTE(tbl2.refID))

它将在字符串周围添加引号并针对您的数组进行测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章