根据键的数量将 MySQL Json 字段拆分为行
我正在尝试将 json 字段拆分为 N 行,给定该字段具有不同的元素。
以下是我使用的查询:
WITH Jsonified AS (
SELECT
test_json_data,
CAST(REPLACE(REPLACE(test_json_data, "\\'", "''"), "'", '"') as json) as json_data
FROM vt_raw_data
WHERE full_url = 'test'
)
SELECT
j.json_data,
JSON_UNQUOTE(JSON_EXTRACT(JSON_KEYS(j.json_data), CONCAT('$[', idx, ']'))) AS `key`-- ,
-- JSON_UNQUOTE(JSON_EXTRACT(j.json_data, CONCAT('$.', JSON_UNQUOTE(JSON_EXTRACT(JSON_KEYS(j.json_data), CONCAT('$[', idx, ']')))))) AS `value`
FROM Jsonified j
CROSS JOIN JSON_TABLE(JSON_KEYS(j.json_data), '$[*]' COLUMNS (idx FOR ORDINALITY)) AS keys_idx;
下面是一个数据示例:
{'provider1': 'malicious', 'provider2': 'malware', 'provider3': 'malware'}
我遇到的问题如下:
- 我返回了三行(如预期),但第 3 行的键为空,它应该是“provider3”
- 我需要对键的值做同样的事情,但我认为解决第 1 点我将能够复制