powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вычленить улицу из строки адреса REGEXP_SUBSTR
17 сообщений из 17, страница 1 из 1
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310056
andrrrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите пожалуйста вычленить улицу из строки адреса

Пример адреса: "Россия, г. Воронеж, ул. Пупкина, дом 30, кв. 27"

Вместо "ул." может быть и "УЛИЦА" и "ПЕРЕУЛОК" и "пер." и "бул." и т.д. Я как понимаю, эти значения надо прописать в REGEXP_SUBSTR, но как, понять не могу.

В итоге должно получиться только название улицы "Пупкина"

Заранее Спасибо!
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310083
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrrrey,

Адреса могут быть вообще любые (в смысле не из какого-то ограниченного набора)? Тогда я бы шел по по пути сличения со справочником улиц из ФИАС-а.
Как вариант, если есть выход в интернет и не требуется высокая поизводительность, то можно пвоспользоваться готовыми сервисами, которые делают то же самое.

А анализировать саму строку, имхо, очень ненадежный подход. "п." - может быть и проездом, и переулком, и площадью, и поселком, и т.д. Мы у себя сталкивались с таким, что клиент написал "п.", а в его городе был и проезд, и проспект с таким названием. Верный адрес вычислили только по номеру дома, которого не было в проезде.
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310094
andrrrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

У меня идет сравнение не только по улице, еще по 4 параметрам, так что если под "пр." будут подразумевать разное, проезд или проспект то ничего страшного, совпадения названий всё равно не будет. Мне бы пример с REGEXP_SUBSTR и хотя бы одним вариантом "УЛИЦА", а не с множеством, остальное я наклепаю.
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310104
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrrreyМне бы пример с REGEXP_SUBSTR и хотя бы одним вариантом "УЛИЦА"Даже это сделать надежно невозможно.
Пример, попробуйте различить:
Россия, г. Воронеж, ул. пупкина 10 корпус 2
Россия, г. Воронеж, ул. имени 8 марта 10

Либо вводите какие-то ограничения на чистоту исходных данных. Которые, опять же, непонятно как проверять.
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310105
andrrrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

у нас "им." идет отдельным столбцом, будет только восьмерка сравниваться, ну и пусть.
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310106
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrrreyМне бы пример с REGEXP_SUBSTR и хотя бы одним вариантом "УЛИЦА", а не с множеством, остальное я наклепаю.Нет, если ты не можешь сделать самый примитивный вариант, то сложнее точно не сможешь.
Напиши сначала для варианта УЛИЦА ФИКСИРОВАННАЯ, потом укажи разные варианты для улицы через (|), потом произвольное название.
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310107
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrrreyМне бы пример с REGEXP_SUBSTR и хотя бы одним вариантом "УЛИЦА", а не с множеством, остальное я наклепаю.Наивная вера в мега-пупер-регэксп.
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310110
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrrreymiksoft,

у нас "им." идет отдельным столбцом, будет только восьмерка сравниваться, ну и пусть.Каким-таким столбцом, если в исходных данных всего одна строка?
Кроме того, там может быть и другое слово. Т.е. число может быть в середине названия названия улицы.
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310115
andrrrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Хорошо, как конкретно из этого примера "Россия, г. Воронеж, ул. Пупкина, дом 30, кв. 27" выцепить "Пупкина"?
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310122
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrrrey,

Код: plaintext
regexp_substr(..., 'Пупкина')
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310125
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrrreymiksoft,

у нас "им." идет отдельным столбцом, будет только восьмерка сравниваться, ну и пусть.
улица - отдельным столбцом бы
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310126
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrrreymiksoft,

Хорошо, как конкретно из этого примера "Россия, г. Воронеж, ул. Пупкина, дом 30, кв. 27" выцепить "Пупкина"?Выцепить по каким именно признакам?
Сформулируйте сначала конкретные признаки, которые актуальны для ваших данных и для ваших задач.
А уж записать их в виде выражения - дело второе.

Если выцеплять всё от "ул."(с возможными пробелами) до запятой, то так:
Код: plsql
1.
2.
SELECT a, '|' || regexp_substr(a, 'ул.\s*(.+?),', 1, 1, 'i', 1) || '|'
  FROM (SELECT 'Россия, г. Воронеж, ул. Пупкина, дом 30, кв. 27' a FROM dual)
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310134
andrrrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Спасибо тебе!
Стану губернатором, возьму тебя в замы.
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310180
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftregexp_substr(a, 'ул.\s*(.+?),', 1, 1, 'i', 1)'г. Улан-Удэ, ул. Приехал из аула, 12'
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310208
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-miksoftregexp_substr(a, 'ул.\s*(.+?),', 1, 1, 'i', 1)'г. Улан-Удэ, ул. Приехал из аула, 12'Да, налажал.
Код: plsql
1.
2.
3.
4.
5.
SELECT a, '|' || regexp_substr(a, 'ул\.\s*(.+?),', 1, 1, 'i', 1) || '|'
  FROM (SELECT 'Россия, г. Воронеж, ул. Пупкина, дом 30, кв. 27' a
          FROM dual
        UNION ALL
        SELECT 'г. Улан-Удэ, ул. Приехал из аула, 12' FROM dual)
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310211
andrrrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,

Кстати да, такие не проходят. Как задать "ул" с точкой и пробелом " ул." в таком запросе?
...
Рейтинг: 0 / 0
Вычленить улицу из строки адреса REGEXP_SUBSTR
    #39310223
andrrrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Спасибо!
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вычленить улицу из строки адреса REGEXP_SUBSTR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]