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

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

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

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

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

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

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

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

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

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

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

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

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

у нас "им." идет отдельным столбцом, будет только восьмерка сравниваться, ну и пусть.
улица - отдельным столбцом бы
...
Рейтинг: 0 / 0
16.09.2016, 11:49:23
    #39310126
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычленить улицу из строки адреса REGEXP_SUBSTR
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
16.09.2016, 12:03:37
    #39310134
andrrrey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычленить улицу из строки адреса REGEXP_SUBSTR
miksoft,

Спасибо тебе!
Стану губернатором, возьму тебя в замы.
...
Рейтинг: 0 / 0
16.09.2016, 12:54:02
    #39310180
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычленить улицу из строки адреса REGEXP_SUBSTR
miksoftregexp_substr(a, 'ул.\s*(.+?),', 1, 1, 'i', 1)'г. Улан-Удэ, ул. Приехал из аула, 12'
...
Рейтинг: 0 / 0
16.09.2016, 13:13:51
    #39310208
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычленить улицу из строки адреса REGEXP_SUBSTR
-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
16.09.2016, 13:16:53
    #39310211
andrrrey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычленить улицу из строки адреса REGEXP_SUBSTR
-2-,

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

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


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