[英]MySQL JSON extract values only if there value > 1
我有下表:
+-------------+----------------+
| id | server |
+-------------+----------------+
| 1 | ["1", "15"] |
+-------------+----------------+
我只需要獲得大於1的值,因此在上面的示例中,我只需要從輸出中獲得15
我嘗試使用此:
SELECT
JSON_EXTRACT(server, "$[*]") as server
FROM streams
WHERE JSON_EXTRACT(server, "$[*]") != JSON_QUOTE('1')
AND id=1;
但是我總是得到[“ 1”,“ 15”]並且需要得到[“ 15”]。
不幸的是,您無法使用MySQL的JSON_EXTRACT
和JSON_SEARCH
函數執行此操作,因為它們分別執行提取和精確匹配(而不是比較)。 因此,您有兩個選擇:
server
值放入新列中(推薦) 我添加了這個:
SELECT CASE WHEN
JSON_UNQUOTE(JSON_SEARCH(server, 'all', 1)) IS NULL THEN
JSON_REMOVE(server, '$."1"')
ELSE
JSON_REMOVE(server, JSON_UNQUOTE(JSON_SEARCH(server, 'one', 1)))
END AS server
FROM streams WHERE id=2 AND server NOT LIKE '%[]%';
現在它可以工作了,但是如果[“ 1”]在json列中只有1,我得到[] ...一個NOT LIKE '%[]%'
但它總是打印出[] ...我需要在其中添加的地方從mysql找不到結果?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.