Anonymizace řetězce

Z PostgreSQL
Verze z 23. 2. 2012, 15:26, kterou vytvořil Pavel (diskuse | příspěvky) (Založena nová stránka: <pre> CREATE OR REPLACE FUNCTION anonymize(text) RETURNS text AS $$ SELECT string_agg(CASE WHEN ascii(c) BETWEEN ascii('a') AND ascii('z') THEN substring('abcdefghijkl...)

(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání
CREATE OR REPLACE FUNCTION anonymize(text)
RETURNS text AS $$
  SELECT string_agg(CASE WHEN ascii(c) BETWEEN ascii('a') AND ascii('z') THEN substring('abcdefghijklmnopqrstuvwxyz' FROM (random()*25)::int+1 for 1) 
                         WHEN ascii(c) BETWEEN ascii('A') AND ascii('Z') THEN substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ' FROM (random()*25)::int+1 for 1) 
                         WHEN c BETWEEN '0' AND '1' THEN ((c::int + (random()* 10)::int) % 10)::text 
                         ELSE c END,'') 
     FROM regexp_split_to_table($1,'') c;
$$ LANGUAGE sql;

postgres=> select anonymize('Jmenuji se Pavel Stehule a bydlim ve Skalici 12 (qjqj) *** jkDJ ***');
                              anonymize                              
---------------------------------------------------------------------
 Jfwmuco gh Owmlx Ttsrlcb r vwtucl em Rnsoamq 72 (sxdp) *** koNF ***
(1 row)