如何在Databricks SQL中检测含撇号记录及特殊字符校验问题
问题:找出Azure Databricks表中含非法特殊字符的记录
需求
需要筛选出表中包含非法特殊字符的记录,允许使用的字符包括:
- 大小写字母、数字
- 空格
- 特殊符号:连字符(-)、逗号(,)、正斜杠(/)、井号(#)、点号(.)、撇号(')
数据示例
L'ÎLE-PERROT -- 无效 CHÉNÉVILLE -- 无效 1205-RUE DE L'ACADIE - 有效 '4th Floor - InterContinental - 有效 VAL D'OR -- 有效 O'LEARY -- 有效 Bucure¿ti -- 无效 LA DORÉ - 无效
注:无效记录包含重音字符(如Î、É、Ó)或未被允许的特殊符号(如¿),有效记录仅包含允许范围内的字符。
尝试的方法及问题
我试过三种校验方法,但所有方法都没能正确处理撇号(')的校验逻辑,导致结果不符合预期:
方法1:使用REGEXP函数
REGEXP(TRIM(column1 ), '[^a-zA-Z0-9,-\-/#''\s]')
方法2:使用rlike运算符
column1 rlike '[a-zA-Z0-9\\-,/#''\\s]'
方法3:使用TRANSLATE函数
TRANSLATE(column1, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,/#. -') = ''
内容的提问来源于stack exchange,提问作者Nitin Gore
相关产品推荐
相关产品推荐

