我将 JSON 数据存储在 MariaDB 中数据类型为 TEXT 的列中。
表 My_Table 的 JSON_Column 中 4 行的示例是:
表第 1 行: [新值:{PSTN=0/34/25}] [旧值:{PSTN=0/31/25/0}]
表第 2 行: [新值:{PASSWORD=194aa6c17f4ad64f8a38a44cb2c90c63,METHOD=7}] [旧值:{PASSWORD=626dd7a54f2gfd7834aabbccaabb345ccb,METHOD=0}]
表第 3 行: [新值:{STATUS=0}] [旧值:{STATUS=1}]
表第 4 行: [新值:{GROUP=223}] [旧值:{GROUP=263}]
我正在寻找将此 JSON 数据转换为行和列的解决方案,如下所示:
帮助提供专家解决方案将受到高度赞赏。
感谢和问候
这不是其他人指出的 JSON。 您可以使用正则表达式解析它们。 它们具有所有格式
{<key>=<value}
。
我们可以创建一个解析键值对的正则表达式;
像这样:
SELECT
REGEXP_REPLACE(`new`, '\\{(.*)=(.*)\\}', '$1') as attribute, -- Attribute is the key, $1 is the key
REGEXP_REPLACE(`new`, '\\{(.*)=(.*)\\}', '$2') as new, -- $2 is the value
REGEXP_REPLACE(`old`, '\\{(.*)=(.*)\\}', '$2') as old
FROM table;
预期输出(第一行):
属性 | 新 | 旧 |
---|---|---|
PSTN | 0/34/25 | 0/31/25/0 |