You need to enable JavaScript to run this app. 如何在PostgreSQL中删除替换字段数据实现地区名称字段清洗
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中删除替换字段数据实现地区名称字段清洗

问题原因

你的原有写法失效的核心原因是replace函数仅支持纯字符串精确匹配,你写的通配符% - %会被识别为普通字符串,无法匹配到连字符分隔的双语内容。

解决方案

使用PostgreSQL内置的split_part函数按分隔符拆分处理双语内容,逻辑分为两步:先完成指定字符串替换得到初步清洗结果,再按需拆分取数即可。

1. 保留连字符后内容(符合你的预期输出)

SELECT 
    TRIM(
        CASE 
            WHEN STRPOS(cleaned_name, ' - ') > 0 
            THEN SPLIT_PART(cleaned_name, ' - ', 2)
            ELSE cleaned_name 
        END
    ) AS name
FROM (
    -- 子查询完成第一步字符串替换
    SELECT 
        TRIM(
            REPLACE(
                REPLACE(
                    REPLACE(name, 'District', ''),
                    '(B)', ''
                ),
                'London Boro', ''
            )
        ) AS cleaned_name
    FROM district
) t;

2. 反向保留连字符前内容

如果需要保留连字符前的内容,直接调整split_part的取值位置即可,无需额外判断:

SELECT 
    TRIM(SPLIT_PART(cleaned_name, ' - ', 1)) AS name
FROM (
    SELECT 
        TRIM(
            REPLACE(
                REPLACE(
                    REPLACE(name, 'District', ''),
                    '(B)', ''
                ),
                'London Boro', ''
            )
        ) AS cleaned_name
    FROM district
) t;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 04:45:07