Regexp заменяет решение в улье, чтобы замаскировать первые 6 символов - PullRequest
2 голосов
/ 16 июня 2020

Попытка замаскировать первые 6 символов в улье с помощью regexp_replace. Но не удалось найти решение.

Ввод:

123-45-6789

Выход:

###-##-6789

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Если вы можете использовать другие символы, кроме #, для маскировки строки, вы можете использовать встроенную функцию маскирования mask_show_last_n.

select mask_show_last_n('123-45-6789',4) 

Вывод будет be nnn-nn-6789 as n используется для маскирования чисел по умолчанию в этих функциях маскирования.

2 голосов
/ 16 июня 2020

Получить подстроку из первых 6 символов и заменить в ней все, кроме -, затем объединить с остальной частью строки:

select regexp_replace(substr('123-45-6789',1,6),'[^-]','#')||substr('123-45-6789',7)

Результат:

###-##-6789

Для Hive версия <2.2.0 используйте concat вместо || оператор: </p>

select concat( regexp_replace(substr('123-45-6789',1,6),'[^-]','#'), substr('123-45-6789',7))
...