📜  postgres 从字符串中提取数字 - SQL (1)

📅  最后修改于: 2023-12-03 15:18:37.774000             🧑  作者: Mango

Postgres 从字符串中提取数字 - SQL

在Postgres中,有时需要从字符串中提取数字,以下是一些方法:

方法一:使用正则表达式

使用正则表达式可以方便地从字符串中提取数字。

SELECT REGEXP_REPLACE('abc123def456', '\D', '', 'g');
-- Output: '123456'
  • REGEXP_REPLACE(string, pattern, replacement, flags) 函数接受四个参数,其中 string 是需要处理的字符串,pattern 是正则表达式,replacement 是替换后的字符串,flags 可以是 'g'(表示全局匹配)或不填(表示只匹配首次出现的子串)。
  • \D 匹配非数字字符,所以在这里会被替换成空字符串。
方法二:使用正则表达式和 substring() 函数

除了使用 REGEXP_REPLACE() 函数,我们还可以使用 substring() 函数和正则表达式来提取数字。

SELECT substring('abc123def456' FROM '\d+');
-- Output: '123456'
  • substring(string FROM pattern) 函数接受两个参数,其中 string 是需要处理的字符串,pattern 是正则表达式。
方法三:使用 translate() 函数

如果我们已经知道了字符串中除了数字以外的字符是什么,就可以使用 translate() 函数来提取数字。

SELECT translate('abc123def456', 'abc', '');
-- Output: '123456'
  • translate(string, from_string, to_string) 函数接受三个参数,其中 string 是需要处理的字符串,from_string 是需要替换的字符,to_string 是替换后的字符,两个字符串长度必须相等。

以上就是在Postgres中从字符串中提取数字的几种方法。

参考链接: