Заменить символы справа от строки в PostgreSQL - PullRequest
1 голос
/ 31 октября 2019

Мне нужно решить проблему для моего проекта.

Мне нужно очистить поле адреса в PostgreSQL, удалив все справа от названия улицы.

И янашел здесь: PostgreSQL заменяет символы справа от строки

SELECT regexp_replace('100 broadway street 100', '(.*)(Street).*', '\1\2', 'i');

Однако я бы хотел более гибко заменить «100 Бродвей-стрит 100», например:

SELECT regexp_replace('100 broadway street 100', '(.*)(Street OR Str. OR Ward OR W. OR Dist).*', '\1\2', 'i');

Может ли кто-нибудь помочь мне написать правильный синтаксис или есть другие ссылки, которые я еще не нашел?

Вход 1: "Улица Александра де Родоса, 100, округ 10, Город HCM"

Вход 2: «Улица 100 Куанг Трунг, округ 10, город HCM»

Вход 3: «Улица 123 Ньютон, район Г.В., Город HCM» Выход 1: «Улица 100 ABC, палата 16«Выход 2:« ул. Куанг Чунг 100 ».vv.

т.е. нужно будет удалить строку за названием дороги

1 Ответ

2 голосов
/ 31 октября 2019

Я думаю, что вы ищете | оператор, подобный этому

SELECT regexp_replace('100 broadway Dist 100', '(.*)(Street|Str|Ward|Dist).*', '\1\2', 'i');

Вывод

100 broadway Dist

Обновление на основе комментариев

Вы можете заменить .* на ..

SELECT regexp_replace('100 broadway Dist Str 100 Str abc Street', 
                      '(.)(Street|Dist|Ward|Str).*', '\1\2', 'i');

Выход

100 broadway Dist
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...