2013-08-18 2 views

ответ

2

REGEXP_REPLACE может это сделать:

SELECT REGEXP_REPLACE('this is a string', '\w', 'x') FROM DUAL; 

Это заменяет все без пробельных символов с x. Чтобы заменить только буквы, попробуйте следующее:

SELECT REGEXP_REPLACE('this is a string', '[A-Za-z]', 'x') FROM DUAL; 
0

Вы можете создать определенную пользователем функцию, как показано ниже, и вызвать эту функцию в запросе для маскировки данных.

create or replace function scrubbing(word in varchar2) 
return varchar2 
as 
each_var char(2); 
final_val varchar2(100); 
complete_data varchar2(4000); 
each_word varchar2(1000); 
cursor val is select substr(replace(word,' ','#'),-level,1) from dual connect by level<=length(word); 
begin 
open val; 
--final_val:= ''; 
loop 
    fetch val into each_var; 
    exit when val%NOTFOUND; 
    --dbms_output.put_line(each_var); 
    final_val := trim(final_val)||trim(each_var); 
    --dbms_output.put_line(final_val); 
    select regexp_substr(final_val,'[A-Za-z]+') into each_word from dual; 
    select replace(translate(final_val,each_word,dbms_random.string('L',length(word))),'#',' ') into complete_data from dual; 
end loop; 
return complete_data; 
end;