Как замаскировать идентификатор электронной почты, не маскируя его доменное имя и точки в oracle SQL?
У меня есть несколько идентификаторов электронной почты в таблице. но мне нужно замаскировать все идентификаторы электронной почты с помощью oracle SQL. Ниже приведены некоторые примеры маскировки идентификаторов электронной почты,
Ввод : Выход :
1. alex.hales@gmail.com = ****.Хейлз@*****.ком
2. Joeroot.eng@yahoo.co.in = * * * * * ot. eng@*****.**.в
Я хочу:
Первая Часть:
Для каждого идентификатора электронной почты первые 5 чартеров с левой стороны " @ "должны быть замаскированы *, но если". " входит в первый символ, то он не должен быть замаскирован, он останется прежним.
вторая часть:
правая сторона от " @ "будет замаскирована*, опять же, если там есть".", то он останется прежним, и доменное имя, такое как .com, .in, должно быть таким, как оно есть.
Заранее спасибо.
Что я уже пробовал:
Declare v_id Varchar2(100):= 'abc.defghijklmnop@qrst.uv.wxyz'; v_id1 Varchar2(100); v_id2 Varchar2(100); v_id3 Varchar2(100); v_id4 Varchar2(100); v_id5 Varchar2(100); v_id6 Varchar2(100); Begin Select v_id, instr(v_id,'.'), instr(v_id,'@'), Case When instr(v_id,'.') >=6 Then '*****'|| substr(v_id,6,(instr(v_id,'@')-5)) Else rpad(lpad('.',instr(v_id,'.'),'*'),6,'*') || substr(v_id,7,(instr(v_id,'@')- 6)) End testing Into v_id1,v_id2,v_id3,v_id4 From dual; dbms_output.put_line(v_id1); dbms_output.put_line(v_id2); dbms_output.put_line(v_id3); dbms_output.put_line(v_id4); End; o/p::: abc.defghijklmnop@qrst.uv.wxyz. 4 18 ***.**fghijklmnop@ SELECT REGEXP_REPLACE (substr(instr('abc.defghijklmnop@qrstname.uv.wxyz','@')+1),'^[.].'*') FROM dual; Output: abc.defghijklmnop@****.**.****
Я не могу разоблачить доменное имя, а также не могу сделать все это вместе. Не мог бы кто-нибудь мне помочь?