例如,字符串abc123CD
需要找出一种方法,只读取字符串中的数字,即
select a_postgres_function('abc123CD')
------
Result
------
123
我的尝试
select substring('abc123CD' from '%#"^[0-9]+$#"%' for '#')
答案 0 :(得分:1)
试试这个:
select (regexp_matches('abc123CD', '\d+'))[1];
由于regexp_matches
返回文本数组,您应该通过[1]
访问第一个元素。
答案 1 :(得分:0)
将该查询包装到功能
中create or replace function shownums(text) returns integer as
$$
select (regexp_matches($1,'\d+'))[1]::int;
$$
language sql;
答案 2 :(得分:0)
如果您想从字符串中获取所有数字字符(而不仅仅是第一组),则删除所有不是数字的字符会更容易:
select regexp_replace('abc123CD45ef', '[^\d]+', '', 'g');
-- regexp_replace
-- --------------
-- '12345'