清洗数据的时候发现有一个字段会包含有一些符号,猜测是图像识别过来的.使用hive自带函数去除.还可能同时包含多个不同字符,可以把这个函数嵌套使用.
使用到regexp_replace函数:

regexp_replace(TRIM(card_number),'[\\\\  \|\'\"\“\”\\-\\=\\+::()( )<>《》{}【】..。、;,,??一_!!`~!@#$%^&*¥′……「]','')

已经包含键盘上绝大部分字符,如果还有其他特殊字符,再添加到正则中即可.

上面的穷举方法比较麻烦,有简单全面的写法:

select regexp_replace('测!@#$♀☑▄▋▇▓♮▬®〼♪♩☋◪试♉%^&*_+&></|\?/.,~$%^&&*()!~@#$_+<字>?`~段','[^\u4e00-\u9fa5a-zA-Z0-9]','')
--仅保留数字字母以及中文,需要下划线 _ 可以添加进去即可. 

正则表达式替换函数:regexp_replace
语法:regexp_replace(string A, string B, string C)
返回值: string
说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数。