在第一个 space 之后到达字符串末尾

get till end of string after first space

我需要按如下方式拆分字符串,当我尝试使用 split_part 时没有成功

select split_part('8 HAMPSHIRE RD',' ',2)    

预期产出:汉普郡路

使用regexp_replace():

select regexp_replace('8 HAMPSHIRE RD', '.*?\s', '');

 regexp_replace 
----------------
 HAMPSHIRE RD
(1 row)

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

with my_table(str) as (
    values ('8 HAMPSHIRE RD')
)
select right(str, -strpos(str, ' '))
from my_table;

如果您想跳过第一个单词,如果它只包含数字,您应该使用 \d(数字)而不是 .(任何字符):

select regexp_replace('8 HAMPSHIRE RD', '\d*?\s', '');

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

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