如何使用SQL将方括号嵌套内容拆分至单独行?
拆分数组字符串为多行数值对的SQL实现方法
针对不同SQL数据库,有对应的实现方式,以下是几种常见数据库的具体操作方法:
MySQL 8.0+ 版本
利用JSON_TABLE函数解析JSON格式的数组,直接拆分出每行的数值对:
SELECT j.value AS `Column A` FROM your_table JOIN JSON_TABLE( your_table.`Column A`, '$[*]' COLUMNS (value VARCHAR(20) PATH '$') ) j;
如果你的字段值不是标准JSON格式(比如引号缺失),可以先做简单清洗再解析:
SELECT j.value AS `Column A` FROM ( SELECT REPLACE(REPLACE(`Column A`, '[', '["'), ']', '"]') AS cleaned_col FROM your_table ) t JOIN JSON_TABLE( t.cleaned_col, '$[*]' COLUMNS (value VARCHAR(20) PATH '$') ) j;
PostgreSQL 版本
方法1:JSON解析方式
SELECT json_array_elements_text(`Column A`::json) AS "Column A" FROM your_table;
方法2:字符串处理+数组拆分
SELECT unnest(string_to_array(trim(both '[]' from `Column A`), '],[')) AS "Column A" FROM your_table;
逻辑说明:先去掉字段首尾的方括号,再把字符串按],['分割成数组,最后将数组拆分为多行。
SQL Server 版本
使用OPENJSON函数实现拆分:
SELECT value AS [Column A] FROM your_table CROSS APPLY OPENJSON(`Column A`);
若字段格式需要调整,先清洗再解析:
SELECT value AS [Column A] FROM ( SELECT REPLACE(REPLACE(`Column A`, '[', '["'), ']', '"]') AS cleaned_col FROM your_table ) t CROSS APPLY OPENJSON(t.cleaned_col);
注意:将上述代码中的your_table替换成你实际使用的表名即可。
内容的提问来源于stack exchange,提问作者dhejok7
相关产品推荐
相关产品推荐

