Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как максимально быстро проверить совпадение числа с маской? / 3 сообщений из 3, страница 1 из 1
23.08.2016, 09:56:22
    #39295962
Migelle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как максимально быстро проверить совпадение числа с маской?
Добрый день
есть примерно такая таблица
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WITH masks AS
         (SELECT 1 id, '123;34556;7722;' mask FROM Dual
          UNION ALL
          SELECT 2 id, '23312;34557;7811;' mask FROM Dual
          UNION ALL
          SELECT 3 id, '25312;781130;' mask FROM Dual)
SELECT *
  FROM masks
 WHERE ....


Которая содержит в строках набор числовых масок разделенных ";" . Маска задает начало числа.
Требуется выбрать строки в которых начало заданного числа совпадает хотя бы с одной маской.
Т.е., например, если взять число 78118293012312312 то должна выбраться строка 2 по маске 7811
а если число 7811304823940423 то должны выбраться две строки 2 и 3.

Выбирать надо в sql запросе. На ум пока приходит только:
1. развернуть поля mask в строки
2. отобрать подходящее like-ом
3. сгруппировать обратно

А нельзя ли это как-то по-другому решить? Regexp-ом?
...
Рейтинг: 0 / 0
23.08.2016, 10:07:42
    #39295977
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как максимально быстро проверить совпадение числа с маской?
MigelleRegexp-ом?
Код: plsql
1.
'^(' || replace(rtrim(mask, ';'), ';', '|') ||')' 
...
Рейтинг: 0 / 0
23.08.2016, 10:20:26
    #39295994
Migelle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как максимально быстро проверить совпадение числа с маской?
Elic,

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


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