You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL拆分address字符串提取数值并生成指定多列

PostgreSQL地址字段拆分与新列插入方案

需求说明

现有PostgreSQL表中address字段格式示例:

Tow 10 Floor 223, Ward AA BB, District CC DD, City E F
Tow 110 Floor 23, Ward BB AA, District DD CC, City F E

需提取Tow对应数值、Floor对应数值、Ward对应内容,去除第二个逗号后的部分,并将结果作为新列插入表中。

实现步骤

  • 添加新列:先为目标表新增三个字段
ALTER TABLE your_table_name
ADD COLUMN tow INTEGER,
ADD COLUMN floor INTEGER,
ADD COLUMN ward TEXT;

(替换your_table_name为实际表名)

  • 更新新列数据:通过字符串函数提取对应内容并写入新列
UPDATE your_table_name
SET
  tow = (regexp_match(address, 'Tow (\d+)'))[1]::INTEGER,
  floor = (regexp_match(address, 'Floor (\d+)'))[1]::INTEGER,
  ward = trim(split_part(split_part(address, ',', 2), 'Ward '));

逻辑说明

  • regexp_match(address, 'Tow (\d+)'):匹配Tow后的数字片段,取第一个捕获组转换为整数得到tow值
  • regexp_match(address, 'Floor (\d+)'):同理匹配Floor后的数字片段得到floor值
  • split_part(address, ',', 2):按逗号拆分字符串取第二部分,再通过trim(split_part(..., 'Ward '))去除Ward 前缀并清理首尾空格,得到ward内容

性能提示

数据量超10000行时,该语句执行效率稳定;若表涉及业务读写,可考虑分批更新避免长时间锁表。

内容的提问来源于stack exchange,提问作者Jayzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:10:27