Teradata中筛选不含字母数字的姓名需使用何种函数?
在Teradata中筛选不含字母或数字的姓名
你要筛选的是Name列里完全不包含字母(A-Z、a-z)和数字(0-9)的记录,对应示例中Flag=1的行。在Teradata里可以用正则表达式函数实现,以下是两种常用写法:
方法一:使用REGEXP_INSTR
SELECT Name, Flag FROM your_table_name WHERE REGEXP_INSTR(Name, '[A-Za-z0-9]') = 0;
REGEXP_INSTR会查找Name中匹配[A-Za-z0-9](所有字母和数字)的子串位置:- 找到匹配项时返回大于0的位置值
- 完全没找到时返回0,正好对应我们要筛选的结果
方法二:使用REGEXP_SIMILAR
SELECT Name, Flag FROM your_table_name WHERE NOT REGEXP_SIMILAR(Name, '.*[A-Za-z0-9].*');
REGEXP_SIMILAR用来判断字符串是否匹配指定正则:.*[A-Za-z0-9].*表示字符串中存在任意字母或数字- 加上
NOT就表示排除所有含字母/数字的记录,留下符合要求的行
内容的提问来源于stack exchange,提问作者Leon35
相关产品推荐
相关产品推荐

