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

SQL Server中提取ID类编号并截取其最后4位数字的方法

SQL Server提取ID编号最后四位数字的解决方案

问题分析

你之前的代码仅匹配ID0开头且长度固定的格式,无法处理ID后带空格、长度不固定的情况,所以得换思路:先精准提取所有以ID开头的编号段(含中间可能的空格),再清理空格,最后取最后四位数字。

可行SQL代码

SELECT 
    [column],
    RIGHT(REPLACE(SUBSTRING(
        [column],
        PATINDEX('%ID%', [column]),
        PATINDEX('%[^0-9 ]%', SUBSTRING([column], PATINDEX('%ID%', [column]) + 2, LEN([column])) + ' ') + 2
    ), ' ', ''), 4) AS LastFourIDDigits
FROM your_table_name;

代码拆解

  1. 定位ID起始位置:PATINDEX('%ID%', [column])找到字符串中第一个ID的起始索引。
  2. 提取完整ID编号段:
    • 从ID位置开始,往后匹配第一个非数字、非空格的字符(PATINDEX('%[^0-9 ]%', ...)),以此确定ID编号段的结束位置。
    • 末尾加' '是为了避免ID段在字符串末尾时,PATINDEX返回0导致提取失败。
  3. 清理空格:REPLACE(..., ' ', '')把ID段内的空格全部移除,比如将ID00 7120转为ID007120。
  4. 截取最后四位:RIGHT(..., 4)直接获取处理后字符串的最后四位数字。

示例验证

用你提供的测试数据执行后,结果如下:

原字符串LastFourIDDigits
Brian Larry, Hays Hill XX, ID007370, Option code - 0123 4567, AAA - XX7370
ID007366 - Dave Jones - XX - Option Code 0121 99997366
ID00 7120 Brian Smith XX Branded company7120
ID07113 Gary Barnes - LLL 0123 9111 AAA LLL7113
ID00 7120 Charles Old XX Recall operation7120
ID0007439 - Kerry Hill - Maidstone XX - Option Code 0124 234 BBB XX7439
ID006817 Paul George Jackson 1234 8464 AAA Recall operation6817

特殊情况处理

如果ID段数字不足四位(比如ID123),RIGHT会直接返回全部数字;若字符串中无ID开头的段,结果为NULL,可通过ISNULL(RIGHT(...), '无匹配ID')设置默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:35:34