📅  最后修改于: 2023-12-03 15:18:37.774000             🧑  作者: Mango
在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中从字符串中提取数字的几种方法。
参考链接: