PostgreSQL连续仅选择字母字符

Joh*_*ohn 7 regex postgresql pattern-matching

尽管表达式出现问题,但我SELECT 需要FROM连续输入字母字符。我试过了:

SELECT id, regexp_replace(_column_name_, '0123456789', '') AS _column_alias_
FROM _table_name_;
Run Code Online (Sandbox Code Playgroud)

我知道一般要点只会替换数字,但是该列仅包含开头的字母数字字符。

因此,如果_column_name_包含一个值a1b2c3,我如何使PostgreSQL返回字符串abc

Erw*_*ter 8

消除字符串中所有数字的最快表达式是使用普通字符translate()

SELECT translate(col,'0123456789','') AS col_without_digits
FROM   tbl;
Run Code Online (Sandbox Code Playgroud)

正则表达式功能强大且用途广泛,但价格昂贵。

@Ben指出的,您的错误是缺少作为第四个参数的“全局”开关。使用正则表达式时,还可以使用速记类\d

SELECT regexp_replace(col, '\d', '', 'g') AS col_without_digits
FROM   tbl;
Run Code Online (Sandbox Code Playgroud)