Извлечение почтового ящика с адреса
У меня есть столбец, который выглядит так
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, чтобы подчеркнуть, что я не могу использовать разделитель символов.
Я попытался использовать левую / правую и левую / правую обрезку, но результаты оказались не такими, как я ожидал.
1 ответ
Вот простой автономный пример:
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)