PostgreSQL SELECT 一行只有字母字符

PostgreSQL SELECT only alpha characters on a row

我需要 SELECT 字母字符 FROM 一行,尽管我在表达时遇到问题。我试过:

SELECT id, regexp_replace(_column_name_, '0123456789', '') AS _column_alias_
FROM _table_name_;

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

所以如果 _column_name_ 包含一个值 a1b2c3 我如何使 PostgreSQL return 字符串 abc?

语法是 regexp_replace(string text, pattern text, replacement text [, flags text]),使用 'g' 作为标志使替换成为全局:

SELECT id, regexp_replace(_column_name_,'[0-9]','','g') AS _column_alias_
FROM _table_name_;

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

SELECT translate(col,'0123456789','') AS col_without_digits
FROM   tbl;

正则表达式功能强大且用途广泛,但成本更高。

您的错误是缺少“全局”开关作为第 4 个参数,如 . While using regular expressions, you can also use the class shorthand \d:

SELECT regexp_replace(col, '\d', '', 'g') AS col_without_digits
FROM   tbl;

如果您还想删除标点符号和所有非字母的内容:

SELECT id, regexp_replace(_column_name_, '[^a-zA-Z]', '', 'g') AS _column_alias_
FROM _table_name_;