MariaDB SQL 查询将 json 数据提取为列和行

问题描述 投票:0回答:1

我将 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 数据转换为行和列的解决方案,如下所示:

enter image description here

帮助提供专家解决方案将受到高度赞赏。

感谢和问候

sql json mariadb
1个回答
0
投票

这不是其他人指出的 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
© www.soinside.com 2019 - 2024. All rights reserved.