sql >> Database >  >> RDS >> PostgreSQL

regexp_replace Unicode in PostgreSQL

Gebruik voor gewone nummers digit tekenklasse als [[:digit:]] of steno \d :

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

Resultaat:

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

Voor andere nummers (bijvoorbeeld ¼) is niet zo eenvoudig, meer bepaald als documentatie zegt dat het ctype (locale) afhankelijk is:

U kunt echter interne PL/Perl-proceduretaal gebruiken en een server-side-functie schrijven met de gewenste Unicode-tekenklassen \p{} :

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

Controleer Hoofdstuk 41 uit doc voor meer informatie over het schrijven van dergelijke functies.




  1. SQL om de duplicaten in een tabel te verwijderen

  2. Wat is de primaire sleutelbeperking in de SQL Server-database - SQL Server / T-SQL-zelfstudie, deel 54

  3. Afkappen met voorwaarde

  4. Sluit automatisch langlopende query's (MySql), Apache Tomcat DataSource