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

Teradata SQL中如何用REGEXP去除字段末尾的日期后缀?

用Teradata SQL正则表达式移除备注末尾的日期

当然可以用正则表达式搞定这个需求!Teradata的REGEXP_REPLACE函数正好能帮你精准匹配并移除备注末尾的日期部分,完全不用依赖固定长度的SUBSTR。

思路分析

你提到的日期格式是两位数字(日)+三位字母(月份缩写,比如FEB、MAR),而且通常会跟在备注的最后,前面可能有空格。我们可以用正则表达式锚定到字符串末尾,只匹配符合这个格式的内容,然后替换为空字符串。

具体实现

这里给出适配你需求的SQL语句:

SELECT 
  original_note,
  -- 移除末尾的日期部分,不区分大小写
  REGEXP_REPLACE(original_note, '(?i)\\s*\\d{2}[A-Z]{3}$', '') AS cleaned_note
FROM your_table_name;

正则表达式详解

让我们拆解一下这个正则的各个部分:

  • (?i):开启不区分大小写模式,这样不管月份是大写(FEB)还是小写(feb)都能匹配到
  • \s*:匹配0个或多个空格,处理日期前面可能有空格的情况(比如备注最后是" 21FEB"或者"21FEB"都能覆盖)
  • \d{2}:匹配正好两位数字,对应日期的日部分(比如21、05)
  • [A-Z]{3}:匹配正好三个字母,对应月份缩写(比如FEB、JAN、MAR)
  • $:锚定到字符串的末尾,确保只匹配最后面的日期,不会误删中间出现的类似格式内容

测试你的示例输入

用你给出的几个备注测试,结果如下:

  • 输入:"ADDED EMAIL ADDRESS FROM CTCE DATA 21FEB" → 输出:"ADDED EMAIL ADDRESS FROM CTCE DATA"
  • 输入:"RMESTIMATE0" → 输出:"RMESTIMATE0"(因为没有匹配的日期模式,原内容保持不变)
  • 输入:'REQUESTED TKT NUMBERS ON 21FEB' → 输出:'REQUESTED TKT NUMBERS ON'

扩展适配(可选)

如果你的日期格式有其他变体,可以调整正则表达式:

  • 如果日期可能是一位数字(比如5FEB):把\d{2}改成\d{1,2}
  • 如果日期带年份(比如21FEB2024):改成(?i)\s*\d{2}[A-Z]{3}\d{4}$,如果年份是可选的就用\d{0,4}
  • 如果日期和前面的内容连在一起(比如DATA21FEB):去掉\s*即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:40:59