尝试使用regexp_replace
屏蔽 Hive 中的前 6 个字符。但是,无法实现解决方案。
输入:
123-45-6789
输出:
###-##-6789
如果您灵活地使用#
以外的其他字符来屏蔽字符串,则可以使用mask_show_last_n
的内置屏蔽函数
select mask_show_last_n('123-45-6789',4)
输出将被nnn-nn-6789
,因为n
在这些掩码函数中默认用于屏蔽数字。
获取前 6 个字符的子字符串并替换除-
之外的所有内容,然后与字符串的其余部分连接:
select regexp_replace(substr('123-45-6789',1,6),'[^-]','#')||substr('123-45-6789',7)
结果:
###-##-6789
对于 Hive 版本 <2.2.0,请使用 concat 而不是 || 运算符:
select concat( regexp_replace(substr('123-45-6789',1,6),'[^-]','#'), substr('123-45-6789',7))