PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

regexp_replace Unicode in PostgreSQL

Verwenden Sie für normale Nummern digit Zeichenklasse als [[:digit:]] oder kurz \d :

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

Ergebnis:

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

Bei anderen Zahlen (zB ¼) ist das nicht so einfach, genauer gesagt als Dokumentation sagt, dass es ctype (locale) abhängig ist:

Sie könnten jedoch die interne prozedurale Sprache von PL/Perl verwenden und eine serverseitige Funktion mit den gewünschten Unicode-Zeichenklassen \p{} schreiben :

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

Lesen Sie Kapitel 41 von doc für weitere Informationen, wie man solche Funktionen schreibt.