PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

regexp_replace Unicode dans PostgreSQL

Pour les nombres ordinaires, utilisez digit classe de caractères en tant que [[:digit:]] ou raccourci \d :

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

Résultat :

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

Pour les autres nombres (par exemple ¼) ce n'est pas si simple, plus précisément comme documentation indique que cela dépend du ctype (locale) :

Cependant, vous pouvez utiliser le langage procédural PL/Perl interne et écrire une fonction côté serveur avec les classes de caractères Unicode souhaitées \p{} :

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

Vérifiez Chapitre 41 de doc pour plus d'informations sur la façon d'écrire de telles fonctions.