Для обычных чисел используйте digit
класс символов как [[:digit:]]
или сокращение \d
:
SELECT regexp_replace('s4y8sds', $$\d+$$, '', 'g');
Результат:
regexp_replace
----------------
sysds
(1 row)
Для других чисел (например, ¼) не все так просто, точнее, поскольку документация говорит, что это зависит от ctype (locale):
В выражении в скобках имя класса символов, заключенное в
[: and:] обозначает список всех символов, принадлежащих этому
учебный класс. Стандартные имена классов символов: alnum, alpha, blank, cntrl,
цифра, график, нижний, печать, пункт, пробел, верхний, xdigit. Эти стоят
для классов символов, определенных в ctype. Локаль может предоставить
др.
Однако вы можете использовать внутренний процедурный язык PL / Perl и написать функцию на стороне сервера с необходимыми классами символов Unicode \p{}
:
CREATE OR REPLACE FUNCTION removeNumbersUnicode(text)
RETURNS text AS $$
$s = $_[0];
$s =~ s/\p{N}//g;
return $s;
$$ LANGUAGE plperl;
Проверьте Глава 41 из документа doc для получения дополнительной информации о том, как писать такие функции.