【发布时间】:2017-07-18 11:15:17
【问题描述】:
当我尝试使用 split_part 时,我需要按如下方式拆分字符串
select split_part('8 HAMPSHIRE RD',' ',2)
预期输出:HAMPSHIRE RD
【问题讨论】:
当我尝试使用 split_part 时,我需要按如下方式拆分字符串
select split_part('8 HAMPSHIRE RD',' ',2)
预期输出:HAMPSHIRE RD
【问题讨论】:
没有正则表达式的更便宜的解决方案:
SELECT substring (
'8 HAMPSHIRE RD'
FROM position(' ' IN '8 HAMPSHIRE RD') + 1
);
【讨论】:
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', '');
【讨论】:
? 符号强制正则表达式变得懒惰(即查找第一个空格)。