W przypadku zwykłych liczb użyj digit
klasa znaku jako [[:digit:]]
lub skrót \d
:
SELECT regexp_replace('s4y8sds', $$\d+$$, '', 'g');
Wynik:
regexp_replace
----------------
sysds
(1 row)
W przypadku innych liczb (na przykład ¼) nie jest to takie proste, a dokładniej jak dokumentacja mówi, że jest zależny od ctype (locale):
Możesz jednak użyć wewnętrznego języka proceduralnego PL/Perl i napisać funkcję po stronie serwera z pożądanymi klasami znaków Unicode \p{}
:
CREATE OR REPLACE FUNCTION removeNumbersUnicode(text)
RETURNS text AS $$
$s = $_[0];
$s =~ s/\p{N}//g;
return $s;
$$ LANGUAGE plperl;
Sprawdź Rozdział 41 z doc, aby uzyskać więcej informacji, jak pisać takie funkcje.