我正在使用PostgreSQL 9.5.1
我有一个地址字段,我尝试提取街道类型(AVE
,RD
,ST
等)。其中一些格式如下:5th AVE N
或PEE DEE RD N
我在PostgreSQL中看到一些方法可以根据空格split_part(name, ' ', 3)
来计算左边的段,但我似乎无法找到任何可以计算的内置函数或正则表达式示例右边的人物。
我前进的想法是这样的:
select case when regexp_replace(name, '^.* ', '') = 'N'
then *grab the second to last group of string values*
end as type;
答案 0 :(得分:1)
在应用于地址数据时,不考虑此方法的稳健性问题,您可以在字符串中提取倒数第二个以空格分隔的子字符串,如下所示:
with a as (
select string_to_array('5th AVE N', ' ') as addr
)
select
addr[array_length(addr, 1)-1] as street
from
a;