コンパイルといくつかの調整が必要になる場合があり、この機能、のようなものを使用し、必要に応じて、書くことができ
:
create or replace function stars(i_str in varchar2) return varchar2 is
type chars is table of char(1);
v_show chars := chars('@', ' ', '.', '+', '_');
v_output varchar2(100) := '';
begin
for i in 1 .. length(i_str) loop
if i = 1 or i = length(i_str)
or substr(i_str, i - 1, 1) member of v_show
or substr(i_str, i + 1, 1) member of v_show
or substr(i_str, i, 1) member of v_show
then
v_output := v_output || substr(i_str, i, 1);
else
v_output := v_output || '*';
end if;
end loop;
return v_output;
end;
テスト:
with test as (
select 'pabcdefb_[email protected]' as str from dual union all
select '+91 91238 51230' from dual union all
select 'PBhagat' from dual union all
select 'Stack Overflow' from dual)
select str, stars(str) as output from test
STR OUTPUT
--------------------------- ---------------------------
[email protected] p******b_h***[email protected]***y.a*c.in
+91 91238 51230 +91 9***8 5***0
PBhagat P*****t
Stack Overflow S***k O******w
Plzをとあなたが望むものを基準に手の込んだshow asterix "*" –
OK、 "_"または "。"で区切られたすべての単語の最初と最後の文字を表示したいまたは "@"を入力します。他のすべての文字は、アスタリックス "*"として表示されます。 – PBhagat