在表中有一个 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] 删除。
我来说两句