如何在Hive表中查找并筛选含非英文字符的记录
Hive表筛选含非英文字符记录的解决方案
问题分析
你原查询使用[^a-zA-Z\\d\\s:]匹配非英文字符,但可能因正则范围限制或转义问题未得到准确结果。该正则会排除数字、空格、冒号,若需求是筛选中文、带重音西语字符、乱码这类非基础英文字符,可以通过更精准的正则调整解决。
正确查询语句
方式1:匹配非a-zA-Z字符(保留指定排除项)
若需继续排除数字、空格、冒号,仅匹配这些之外的非英文字符,可简化正则的数字匹配规则(避免转义歧义):
SELECT tbl1.id AS id , tbl1.first_name AS first_name , tbl1.second_name AS second_name FROM emp_table tbl1 WHERE tbl1.first_name RLIKE '[^a-zA-Z0-9\\s:]' OR tbl1.second_name RLIKE '[^a-zA-Z0-9\\s:]';
方式2:匹配所有非ASCII字符(覆盖多语言场景)
如果要精准筛选所有非基础ASCII的字符(包括中文、日文、带重音西语字符、乱码等),使用Unicode属性匹配:
SELECT tbl1.id AS id , tbl1.first_name AS first_name , tbl1.second_name AS second_name FROM emp_table tbl1 WHERE tbl1.first_name RLIKE '[^\\p{ASCII}]' OR tbl1.second_name RLIKE '[^\\p{ASCII}]';
验证结果
针对你的示例数据,上述两种查询都会返回预期输出:
id first_name second_name 1 尚 爱华 2 Shané Olum�
内容的提问来源于stack exchange,提问作者Rummy
相关产品推荐
相关产品推荐

