Задать вопрос

Проверка вхождения IP адреса в диапазон средствами SQL или PL/SQL?

Привет, други.


Подскажите пож-та, как средствами SQL (предпочтительно) или PL/SQL реализовать проверку вхождения конкретных IP адресов в тот или иной диапазон?


Проще говоря, надо определить, к какой подсети относится конкретный IP адрес:


Есть таблица ip_networks формата

RANGE_BEGIN RANGE_END RANGE_NAME<br/>
10.160.1.0 10.160.1.125 MSK<br/>
10.160.1.126 10.160.1.254 SPB



… и таких еще много…


и нужно выводить в select-запрос значение поля RANGE_NAME для каждого IP адреса из длинного списка.


В голове крутится что-то очень длинное с использованием BETWEEN, FOR и CASE, но подозреваю, что эта задача как-то элементарнее должна решаться…


Очень на вас надеюсь…
  • Вопрос задан
  • 6101 просмотр
Подписаться 4 Оценить Комментировать
Решение пользователя bigbaraboom К ответам на вопрос (2)
bigbaraboom
@bigbaraboom
Если поля имеют тип inet, то так:

SELECT * FROM ips WHERE inet '10.160.1.15' >= RANGE_BEGIN AND inet '10.160.1.15' <= RANGE_END ;
Ответ написан