字符串包含数字和字母数据。只提取号码的方法是什么?例如: 对于字符串" abc-123a-66" select应返回" 123"
答案 0 :(得分:3)
您可以使用regexp_matches
CREATE table foo (
test VARCHAR);
INSERT INTO foo VALUES('abc-123a-66');
SELECT (regexp_matches(test, '\d+'))[1] FROM foo;
的示例
答案 1 :(得分:1)
在PostgreSQL中,这可以通过以下方式完成:
SELECT regexp_matches(regexp_replace(whatever_columnn,'\D*',''),'\d+') FROM whatever_table;
第一个函数(regexp_replace
)删除字符串开头的每个非数字,第二个函数(regexp_matches
)从第一个函数的输出中提取任何数字的一个或多个匹配项。 / p>