Postgres如何将表中存储的字符串格式列表拆分为独立行
问题根因
你之前的写法是将移除方括号后的整段逗号拼接文本作为单个元素存入数组,因此即便调用unnest也只能返回一整行的拼接字符串,无法拆分出独立元素。
解决方案(适配PostgreSQL等支持unnest、string_to_array的数据库)
核心逻辑是先把处理后的文本按逗号拆分为多元素数组,再通过unnest展开为多行:
SELECT unnest( string_to_array( -- 仅移除首尾的方括号,避免误删内容中的同类符号 regexp_replace(regexp_replace(place_id, '^\[', ''), '\]$', ''), ',' -- 按逗号拆分生成多元素数组 ) ) AS place_id FROM place_ids;
如果需要去掉每个元素两侧的单引号,可以额外加上trim处理:
SELECT trim( unnest( string_to_array( regexp_replace(regexp_replace(place_id, '^\[', ''), '\]$', ''), ',' ) ), '''' -- 移除元素两侧的单引号 ) AS place_id FROM place_ids;
执行后即可得到每行一个独立字符串的预期输出。
内容的提问来源于stack exchange,提问作者ML_Engine
相关产品推荐
相关产品推荐

