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

SQL提取地址列Victoria后数字:请求修正错误代码

问题修正方案

你的核心问题是原代码逻辑未精准定位到Victoria后的目标数字,反而误取了末尾的-220。以下是修正后的实现思路和代码:

核心思路

  1. 判断触发条件:检查地址字符串中是否存在Australia -(即Australia后紧跟连字符和数字),用模式匹配确保逻辑触发的准确性。
  2. 提取目标数字:先定位Victoria 的位置,再截取其后的连续数字(直到遇到非数字字符)。

修正后的SQL代码

SELECT 
    [Address],
    CASE 
        -- 匹配Australia后存在连字符+数字的场景
        WHEN PATINDEX('%Australia - [0-9]%', [Address]) > 0 THEN
            -- 提取Victoria后的连续数字
            SUBSTRING(
                [Address],
                CHARINDEX('Victoria ', [Address]) + LEN('Victoria '),
                PATINDEX('%[^0-9]%', SUBSTRING([Address], CHARINDEX('Victoria ', [Address]) + LEN('Victoria '), LEN([Address]))) - 1
            )
        ELSE '' -- 不符合条件时返回空,可根据需求调整返回值
    END AS MyNewColumn
FROM 你的表名;

代码说明

  • PATINDEX('%Australia - [0-9]%', [Address]) > 0:精准匹配Australia后紧跟- 和数字的格式,确保仅在符合需求的场景下执行提取逻辑。
  • CHARINDEX('Victoria ', [Address]) + LEN('Victoria '):计算出Victoria 之后的起始位置,跳过Victoria 本身。
  • SUBSTRING(..., PATINDEX('%[^0-9]%', ...) -1):从起始位置开始截取,直到遇到第一个非数字字符,得到纯数字的目标值(比如示例中的3074)。

测试验证

用你提供的示例地址"Synnot Road, Balwyn Victoria 3074, Australia - 220"测试,该代码会正确返回3074,而非原代码的-220。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:12:47