Teradata正则表达式筛选异常姓氏数据报错求助
Teradata 无效Last_Name数据统计方案
Teradata的正则匹配需要使用REGEXP_SIMILAR函数,而非直接用REGEXP,这是你之前报错的核心原因。以下是针对需求的正确查询语句:
统计无效数据数量
SELECT COUNT(*) AS invalid_last_name_count FROM HISTORY_MEMBERS WHERE -- 匹配以test开头的测试条目(不区分大小写) LOWER(Last_Name) LIKE 'test%' -- 匹配长度小于2的条目 OR LENGTH(Last_Name) < 2 -- 匹配包含非英文字母的条目 OR NOT REGEXP_SIMILAR(Last_Name, '^[A-Za-z]+$', 'i');
说明
REGEXP_SIMILAR是Teradata官方支持的正则匹配函数,第三个参数'i'表示不区分大小写,确保大写开头的字母也能被正确匹配。LOWER(Last_Name) LIKE 'test%'统一转为小写后匹配,覆盖所有大小写形式的测试条目(如Test、TEST等)。NOT REGEXP_SIMILAR(...)用于筛选出不符合"全英文字母"规则的条目,也就是包含非字母字符的无效数据。
如果需要查看具体的无效数据明细,把COUNT(*)换成*即可:
SELECT * FROM HISTORY_MEMBERS WHERE LOWER(Last_Name) LIKE 'test%' OR LENGTH(Last_Name) < 2 OR NOT REGEXP_SIMILAR(Last_Name, '^[A-Za-z]+$', 'i');
内容的提问来源于stack exchange,提问作者DLPP
相关产品推荐
相关产品推荐

