Postgresql 到达第一个空格后的字符串末尾

Postgresql 到达第一个空格后的字符串末尾,postgresql,postgresql-9.4,Postgresql,Postgresql 9.4,当我尝试使用split_part Non luck时,我需要按如下方式拆分字符串 select split_part('8 HAMPSHIRE RD',' ',2) 预期产出:汉普郡路使用: 使用字符串操作函数的替代解决方案: with my_table(str) as ( values ('8 HAMPSHIRE RD') ) select right(str, -strpos(str, ' ')) from my_table; 如果要跳过仅包含数字的第一个单词,则应使用\

当我尝试使用split_part Non luck时,我需要按如下方式拆分字符串

select split_part('8 HAMPSHIRE RD',' ',2)    
预期产出:汉普郡路使用:

使用字符串操作函数的替代解决方案:

with my_table(str) as (
    values ('8 HAMPSHIRE RD')
)
select right(str, -strpos(str, ' '))
from my_table;
如果要跳过仅包含数字的第一个单词,则应使用
\d
(数字)而不是
(任何字符):


没有正则表达式的更便宜的解决方案:

SELECT substring (
          '8 HAMPSHIRE RD'
          FROM position(' ' IN '8 HAMPSHIRE RD') + 1
       );

谢谢,但是你能解释一下“.*?\s”是什么意思吗?是否\s表示空格和空格。指从位置1和*开始?表示直到字符串结束。表达式表示直到第一个空格(包括此空格)的任何字符串。
符号强制正则表达式懒惰(即查找第一个空格)。我将此问题标记为已回答,但是否有任何帮助仅检查数字后面的空格?因为当我将上面的表达式应用于“邮箱203”这样的地址时,我得到了“邮箱203”,我希望结果是“邮箱203”。对不起,我以前应该在我的问题中包括这个例子
select regexp_replace('8 HAMPSHIRE RD', '\d*?\s', '');
SELECT substring (
          '8 HAMPSHIRE RD'
          FROM position(' ' IN '8 HAMPSHIRE RD') + 1
       );