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

如何查找并移除地址中数字后的ND/RD后缀?

地址序数词后缀(nd/rd)移除方案

针对你需要把类似“200 162nd Street”的地址处理成“200 162 Street”的需求,核心是精准匹配数字后的nd/rd后缀并移除,下面分主流数据库给出具体实现:

MySQL/MariaDB

使用REGEXP_REPLACE函数,通过正则匹配数字+nd/rd的组合,替换为原数字:

SELECT REGEXP_REPLACE('200 162nd Street', '([0-9]+)(nd|rd)', '\\1') AS cleaned_address;
-- 输出结果:200 162 Street

注:MySQL里正则替换的反向引用需要用双反斜杠\\1转义。

PostgreSQL

同样用REGEXP_REPLACE,反向引用直接用单反斜杠即可:

SELECT REGEXP_REPLACE('200 162nd Street', '([0-9]+)(nd|rd)', '\1') AS cleaned_address;
-- 输出结果:200 162 Street

SQL Server

2016及以上版本(支持正则)

SELECT REGEXP_REPLACE('200 162nd Street', '([0-9]+)(nd|rd)', '$1') AS cleaned_address;
-- 输出结果:200 162 Street

旧版本(无正则支持)

用PATINDEX定位后缀位置,再通过STUFF移除:

DECLARE @address VARCHAR(100) = '200 162nd Street';
SELECT CASE
         WHEN PATINDEX('%[0-9]nd %', @address) > 0 THEN STUFF(@address, PATINDEX('%[0-9]nd %', @address)+1, 2, '')
         WHEN PATINDEX('%[0-9]rd %', @address) > 0 THEN STUFF(@address, PATINDEX('%[0-9]rd %', @address)+1, 2, '')
         ELSE @address
       END AS cleaned_address;

额外说明

  • 上述正则模式仅匹配数字紧跟nd/rd的场景,避免误删地址中其他单词包含的nd/rd(比如“Randolph Street”这类不会被影响)。
  • 如果需要扩展处理其他序数词后缀(如st/th),直接在正则匹配项里补充即可,比如写成([0-9]+)(nd|rd|st|th)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:30:51