PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

regexp_replace Unicode in PostgreSQL

Per i numeri ordinari usa digit classe di caratteri come [[:digit:]] o abbreviazione \d :

SELECT regexp_replace('s4y8sds', $$\d+$$, '', 'g');

Risultato:

 regexp_replace
----------------
 sysds
(1 row)

Per altri numeri (ad esempio ¼) non è così semplice, più precisamente come documentazione dice che dipende da ctype (locale):

Tuttavia è possibile utilizzare il linguaggio procedurale PL/Perl interno e scrivere funzioni lato server con le classi di caratteri Unicode desiderate \p{} :

CREATE OR REPLACE FUNCTION removeNumbersUnicode(text)
RETURNS text AS $$
    $s = $_[0];
    $s =~ s/\p{N}//g;
    return $s;
$$ LANGUAGE plperl;

Consulta il Capitolo 41 da doc per maggiori informazioni su come scrivere tali funzioni.