从地址中提取PO框

时间:2017-08-09 14:58:40

标签: postgresql actian

我有一个看起来像这样的列

Column 1 
--------------
123 Main Street

P.O. Box 1234

PO Box 4569 

P.O Box 4975 

P.O. Box 796 Attn: Lease 

我如何只提取数字,只有1234,4569,4975,796?

(各种不同的PO强调我不能使用字符分隔符。

我尝试使用左/右和ltrim /右边修剪,但结果不是我所期待的。

1 个答案:

答案 0 :(得分:0)

这是一个简单的自包含示例:

create table test (a text);

insert into test values 
('123 Main Street'),
('P.O. Box 1234'),
('PO Box 4569'),
('P.O Box 4975'),
('P.O. Box 796 Attn: Lease');

smarlowe=# select coalesce(substring(substring(a from 'P.*O.*[0-9]+') from '[0-9]+'),'NOMATCH') from test;
 coalesce
----------
 NOMATCH
 1234
 4569
 4975
 796
(5 rows)