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

Oracle 12C地址字段提取公寓编号(Flat No)的SQL查询需求

Oracle 12C批量提取地址中的公寓编号(Flat No)

针对你需要从地址字段批量提取Flat No相关内容的需求,这里提供一个高效的正则表达式解决方案,适配你给出的两种地址格式,同时支持处理大量数据行。

核心查询语句

假设你的表名为addresses,存储地址的字段为full_address,可以使用以下SQL查询:

SELECT 
    full_address,
    -- 提取Flat No部分,忽略大小写,适配多种结尾场景
    REGEXP_SUBSTR(full_address, 'Flat no.*?(?=,|\s+[A-Z])', 1, 1, 'i') AS extracted_flat_no
FROM addresses;

正则表达式详解

这个正则表达式的逻辑是精准匹配Flat No相关内容,避免过度匹配:

  • Flat no:匹配固定开头,'i'参数开启忽略大小写,所以能兼容Flat No、flat no等大小写变体
  • .*?:非贪婪模式匹配任意字符,确保不会把后面的街道信息也包含进来
  • (?=,|\s+[A-Z]):正向预查停止条件,当遇到以下两种情况时停止匹配:
    • 逗号(如第一个示例中Flat No后的逗号)
    • 空格+大写字母(如第二个示例中街道名Scramendo的开头大写S)

测试验证

针对你给出的两个示例地址:

  • 输入:Abc.. Flat no - 8956, 8th road , Scramendo 4th street,Portland.
    返回结果:Flat no - 8956
  • 输入:Abcd.. Flat no Ad- 3434/89/69 Scramendo 4th street,Portland.
    返回结果:Flat no Ad- 3434/89/69

扩展说明

  • 如果地址中存在多个Flat No条目,只需调整REGEXP_SUBSTR的第4个参数(匹配次数),或者结合CONNECT BY语法来提取所有匹配项
  • 若有其他特殊格式的地址(比如Flat No后用其他分隔符),可以在预查条件(?=...)中添加对应的规则,灵活适配不同场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:44:11