[英]Convert JSON field to key value pair in mysql
我將預測存儲在 mysql 表的 JSON 字段中,如下所示
SELECT id, value from predictions
id | value |
+--------------------------+
1 | {"class1": 0.99, "class2": 0.05}
2 | {"class1": 0.94, "class2": 0.01, "class3": 0.4}
...
每行包含一個帶有(可能)不同鍵的字典,但每個字典都遵循這個模式。
我想將其反序列化為如下鍵值結果:
id | class | confidence |
+------------------------+
1 | class1 | 0.99 |
1 | class2 | 0.05 |
2 | class1 | 0.94 |
2 | class2 | 0.01 |
2 | class3 | 0.4 |
如果 JSON 的格式為包含每個預測 class 的一個字典的列表格式,我可以使用JSON_TABLE
,因為我正在使用 MySQL > 8.0,但是我不知道該怎么做。
當您使用 MySql 8.0 時,您可以使用JSON_KEYS()
、 JSON_EXTRACT()
和JSON_TABLE
來滿足您的要求,如下所示:
SELECT
id,
class,
json_extract(value_,concat('$.',class)) confidence
from test t1
cross join
json_table(
json_keys(value_)
, '$[*]' columns(class varchar(10) path '$')
) t2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.