2016-04-13 28 views
-1

Unutulan parolanın bazı sitelerinde pl/sql gibi bir dizedeki bazı karakterleri gizlemek/değiştirmek (* ile yıldız) seçenek, gibi e-posta kimliklerini veya telefon numaralarını göstermiyor:Gizle/değiştir (with astric '*') bir dizgede bazı karakterler pl/sql

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

ya ben de "_" or "." or "@" ile ayrılan her kelimenin ilk ve son karakterleri görüntülemek isteyen

+91 9**** **160 

.
Diğer tüm karakterler "*" asterix olarak görüntülenmelidir.

Bu sorun hakkında herhangi bir yardıma mı ihtiyacınız var?

+0

Plz etmek istediğini kriterler üzerinde durmak asterix "*" göster –

+0

Tamam, "_" veya "." ile ayrılmış her kelimenin ilk ve son karakterlerini göstermek istiyorum veya "@". Diğer tüm karakterler, "*" olarak belirtilmelidir. – PBhagat

cevap

0
Sen derlemek ve bazı ayarlamalar gerekebilir Bu işlevin, böyle bir şey kullanmak, ihtiyaçlarınıza göre yazabiliriz

:

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; 

Testi:

with test as (
    select '[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

Teşekkür ederim çok arkadaşım ... benim için çalıştı .. – PBhagat