2016-04-13 4 views
-1

一部のサイトでは、パスワードを忘れてpl/sqlのような文字列を隠す/置き換える(アスタリスクは*)私はどちらか"_" or "." or "@"で区切られたすべての単語の最初と最後の文字を表示したいpl/sqlの文字列の一部の文字を隠す/置き換える(astric '*')

p******bh****@y****.**.in 

または

+91 9**** **160 

:オプションは、彼らのような電子メールIDまたは電話番号を表示します。
他のすべての文字は、アスタリスク"*"として表示する必要があります。

この問題に関するお手伝いはありますか?

+0

Plzをとあなたが望むものを基準に手の込んだshow asterix "*" –

+0

OK、 "_"または "。"で区切られたすべての単語の最初と最後の文字を表示したいまたは "@"を入力します。他のすべての文字は、アスタリックス "*"として表示されます。 – PBhagat

答えて

0
コンパイルといくつかの調整が必要になる場合があり、この機能、のようなものを使用し、必要に応じて、書くことができ

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 
+0

ありがとう、私の友人...それは私のために働いた.. – PBhagat

関連する問題