2017-07-31 76 views
0

我使用PostgreSQL 9.5.1第二檢索到的最後一個字PostgreSQL中

我在那裏我試圖提取街道類型(AVERDST等)的地址字段。他們中的一些格式如下:5th AVE NPEE 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

這是保證失敗教室以外的任何地方。郵政地址不如女士的着裝大小統一。你應該使用地址驗證服務,它返回你感興趣的組件中的地址,而不是試圖讓數據庫自己完成。 –

+0

想想你的一些客戶也可以住在其他國家。 – peufeu

+0

這個數據集中只有大約26k條記錄,所以我非常有信心,如果我能夠完成這一點,那麼它將解決問題。 – Matt

回答

1

撇開這種方法的穩健性的問題,當應用到地址數據,你可以像一個字符串中提取的倒數第二個空格分隔子這:

with a as (
    select string_to_array('5th AVE N', ' ') as addr 
    ) 
select 
    addr[array_length(addr, 1)-1] as street 
from 
    a; 
相關問題