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_;
我需要 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 个参数,如 \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_;