我有下表:
+-------------+----------------+
| 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”]。
答案 0 :(得分:1)
不幸的是,您不能使用MySQL的JSON_EXTRACT
和JSON_SEARCH
函数来执行此操作,因为它们分别执行提取和精确匹配(而不是比较)。所以,你有两个选择:
server
值放入新列(推荐)答案 1 :(得分:0)
我补充说:
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找到结果?