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

Teradata中识别Unicode列符合特定正则的记录报错求助

解决REGEXP_SIMILAR正则模式无效的问题

你的报错是因为正则表达式里的字符范围存在无效内容,导致模式不合法。具体问题和修复方案如下:

原错误原因

  • 第一个字符类[�-ſ]包含了ASCII空字符(�),这在正则字符类中是不允许的,会直接导致模式无效。
  • 第二个字符类[＀-￯]是全角符号的范围,和你要匹配的带重音拉丁姓名完全无关,而且这个范围的边界存在语法问题。

修复后的SQL写法

针对DB2(因为REGEXP_SIMILAR是DB2专属函数),可以用以下两种方式实现需求:

方式1:匹配明确的带重音拉丁字符范围

直接覆盖大部分带重音的拉丁字母(包含大小写):

case 
  when REGEXP_SIMILAR(trim(first_name), '.*[À-ÿ]+.*', 'i') = 1 
  then 'Y' 
  else 'N' 
end allowed_y_n

方式2:用Unicode属性匹配重音标记

如果需要更精准匹配带重音的字符(比如字母+重音组合),可以用Unicode属性\p{Mn}(匹配非间距重音标记):

case 
  when REGEXP_SIMILAR(trim(first_name), '.*\p{Mn}+.*', 'i') = 1 
  then 'Y' 
  else 'N' 
end allowed_y_n

补充说明

  • 如果你的数据库不是DB2(比如Oracle、MySQL),需要替换为对应函数:Oracle用REGEXP_LIKE,MySQL用REGEXP或REGEXP_LIKE,语法逻辑基本一致。
  • 若要同时检查last_name,直接在when条件里追加OR REGEXP_SIMILAR(trim(last_name), ...)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:30:08