Новое в Regex (которое недавно было добавлено в SQL в DB2 for i). Я ничего не знаю о различных движках, но исследования показывают, что он «основан на расширенных регулярных выражениях POSIX».
Я хотел бы получить название улицы (первое нечисловое слово) из адреса.
например.
101 Main Street = Main
2/b Pleasant Ave = Pleasant
5H Unpleasant Crescent = Unpleasant
Извините, у меня нет строки, которая не работает, как предложено программным обеспечением форума. Я даже не знаю с чего начать. Я попробовал несколько вещей, которые нашел в поиске, но они либо ничего не дали, либо первое «слово» - то есть число (101, 2 / b, 5H).
Спасибо
Редактировать: Хотя кажется, что реализация IBM регулярных выражений для семейства баз данных DB2 может быть слишком чуждой для многих экспертов-резидентов, я остановлюсь на некоторых подробностях, если это поможет .
Простая формулировка требования на английском языке:
Базовое / приемлемое: найти первое слово / непрерывную строку, которая не содержит цифр или специальных символов
Продвинутый / идеальный: найдите первое слово, которое содержит три или более символов, представляющих собой только буквы и ноль или один встроенный тире / дефис, но без цифр или других символов.
Дополнительные примеры (оригинальные в верхней части все еще действительны)
190 - 192 Tweety-bird avenue = Tweety-bird
190-192 Tweety-bird avenue = Tweety-bird
Charles Bronson Place = Charles
190H Charles-Bronson Place = Charles-Bronson
190 to 192 Charles Bronson Place = Charles
Второе редактирование:
Перебираясь в интернете и пробуя каждое смутно связанное выражение, которое я смог найти, я наткнулся на вот это :
[a-zA-Z]+(?:[\s-][a-zA-Z]+)*
, который на самом деле работает довольно хорошо - он дает название улицы и тип улицы, которые при отражении на самом деле подойдут моей цели, а также только название улицы (я могу легко расширить общие сокращения - например, от RD до ROAD - на лету) ,
Пример SQL:
select HAD1,
regexp_substr(HAD1, '[a-zA-Z]+(?:[\s-][a-zA-Z]+)*')
from ECH
where HEDTE > 20190601
Пример вывода
Ship To REGEXP_SUBSTR
Address
Line 1
32 CHRISTOPHER STREET CHRISTOPHER STREET
250 - 270 FEATHERSTON STREET FEATHERSTON STREET
118 MONTREAL STREET MONTREAL STREET
7 BIRMINGHAM STREET BIRMINGHAM STREET
59 MORRISON DRIVE MORRISON DRIVE
118 MONTREAL STREET MONTREAL STREET
MASON ROAD MASON ROAD
Я знаю, что это был не совсем вопрос, который я задал, поэтому извиняюсь перед всеми, кто мог бы сделать это, но добросовестно выполнял первоначальный запрос.