2017-10-18 10 views
1

2番目のスペースの後に、文字列の特定の位置まで値を取得する必要があります。 出典:split_part関数からn番目の分割から文字列の最後まで

"8 115 MACKIE STREET VICTORIA PARK WA 6100 AU" 
"6A CAMBOON ROAD MORLEY WA 6062 AU"  

出力:現在、私はユニット#から通りの名前と郊外を分割しようとしている

"MACKIE STREET VICTORIA PARK" 
"CAMBOON ROAD MORLEY" 

、始まりと状態、郵便番号のストリート#の存在、国の終わり。

答えて

0
t=# with s(v) as (values('6A CAMBOON ROAD MORLEY WA 6062 AU'),('8 115 MACKIE STREET VICTORIA PARK WA 6100 A')) 
, split as (select *,count(1) over (partition by v) from s, regexp_matches(v,'([A-Z]+)','g') with ordinality t(m,o)) 
select distinct v,string_agg(m[1],'') over (partition by v) from split where o <= count-(3-1); 
         v      |   string_agg 
---------------------------------------------+------------------------------ 
8 115 MACKIE STREET VICTORIA PARK WA 6100 A | MACKIE STREET VICTORIA PARK 
6A CAMBOON ROAD MORLEY WA 6062 AU   | CAMBOON ROAD MORLEY 
(2 rows) 

私は、このように端からではなく三つの位置を切断するが、1は先にインデックスを知られている2 (3-1)。インデックス(または嵌合しないマスク[A-Z]+)を除外しました

また、私は希望の結果に反して2番目のスペースから開始しません。

関連する問題