sql >> Databasteknik >  >> RDS >> PostgreSQL

regexp_ersätt Unicode i PostgreSQL

För vanliga nummer använd digit teckenklass som [[:digit:]] eller förkortning \d :

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

Resultat:

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

För andra siffror (till exempel ¼) är inte så enkelt, mer exakt som dokumentation säger att det är ctype (locale) beroende:

Men du kan använda internt PL/Perl-procedurspråk och skriva server-side-funktion med önskade Unicode-teckenklasser \p{} :

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

Kolla kapitel 41 från doc för mer information om hur man skriver sådana funktioner.




  1. Våra mest populära databasblogginlägg 2017

  2. XPath1 vid SQL/XML, count element returnerar tomma

  3. Har databaser förutom Postgres funktioner som är jämförbara med utländska dataomslag?

  4. Hur man kommer åt och uppdaterar Sqlite db-fil lagrad lokalt [tillgångsmapp] i projektfil med cordova