在表中有一個 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"]','[', ''), ']', ''));不評價
uj5u.com熱心網友回復:
如果值存在,您可以在 JSON 中搜索JSON_CONTAINS
例子
注意,JSON_CONTAINS這兩個引數需要一個有效的 JSON,所以JSON_CONTAINS('["A1"]', 'A1')我們是無效的,因為A1它不是一個有效的 JSON 字串表示。
對于哪里,你可以簡單地做
WHERE JSON_CONTAINS('["A1", "A2", "BI"]', JSON_QUOTE(tbl2.refID))
它將在字串周圍添加引號并針對您的陣列進行測驗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/453107.html
