如何在PostgreSQL中分割字符串为数组后修剪每个元素
解决PostgreSQL分割字符串后去除数组元素首尾空白的方法
方案1:正则分割一步到位(推荐)
直接用regexp_split_to_array函数,通过正则匹配带前后空白的分号作为分隔符,分割后直接得到无首尾空白的元素数组:
regexp_split_to_array("Column", '\s*;\s*') as "SplitColumn"
原理:\s*匹配任意数量的空白字符(空格、制表符等),\s*;\s*能精准匹配你的输入里" ; "这种带空白的分隔符,分割时直接跳过空白,得到干净的元素。
测试你给出的输入"something ; like ; this",输出结果为:
"SplitColumn":["something", "like", "this"]
方案2:先分割再逐个处理后聚合
如果坚持用string_to_array,可以把数组拆成单行记录,对每个元素执行trim后再重新聚合为数组:
array(select trim(unnest(string_to_array("Column", ';')))) as "SplitColumn"
步骤拆解:
string_to_array("Column", ';'):按分号分割成带空白的原始数组unnest(...):将数组展开为多行,每行对应一个元素trim(...):对每个元素去除首尾空白array(select ...):把处理后的单行记录重新组合成数组
这个方法也能得到目标结果,适合需要对分割后的元素做更多自定义处理的场景。
内容的提问来源于stack exchange,提问作者Jonathan Welton
相关产品推荐
相关产品推荐

