Дано
Имеются шаблоны IP-адресов (строк в формате IPv4), используемых для проверки доступа.
Шаблон состоит из цифр, точек и символов '*' (звездочка).
Цифры составляют число от 0 до 255.
Числа разделяются символами ‘.’ (точка).
Символ '* ' (звездочка) означает «любое допустимое в адресе число» (не цифру!).
Шаблон всегда начинается с числа.
Шаблон не может начинаться с символа '*' (звездочка) или ‘.’ (точка).
Допустимые варианты шаблонов:
- NNN.*,
- NNN.NNN.*,
- NNN.NNN.NNN.*,
- NNN.NNN.NNN.NNN,
где NNN – числа от 0 до 255.
Для хранения шаблонов имеется таблица IP_LIST:
Код: Выделить всё
-- Команда для создания для Oracle Database
CREATE TABLE ip_list(
id NUMBER(9) NOT NULL
, IP_mask VARCHAR2(15 CHAR) NOT NULL
, CONSTRAINT ip_list$P
PRIMARY KEY(id)
, CONSTRAINT ip_list$U$ip_mask
UNIQUE(ip_mask)
, CONSTRAINT ip_list$C$ip_mask
CHECK (NVL( LENGTH( LTRIM(ip_mask, '.0123456789*')), 0) = 0)
);Код: Выделить всё
-- Команда создания для SQLite
CREATE TABLE ip_list(
id INTEGER NOT NULL
, IP_mask TEXT NOT NULL
, CONSTRAINT ip_list$P
PRIMARY KEY(id)
, CONSTRAINT ip_list$U$ip_mask
UNIQUE(ip_mask)
, CONSTRAINT ip_list$C$ip_mask
CHECK (LENGTH( LTRIM(ip_mask, '.0123456789*')) = 0)
) STRICT;IP_MASK – шаблон IP-адресов.
Скрипты для создания таблиц и загрузки тестовых данных прилагаются.
После их выполнения в таблице IP_LIST должно быть 24603 строки.
Задание
Одной командой SELECT подсчитать количество IP-адресов (IPv4) устройств, соответствующих шаблонам.
При ответе приведите:
- Название СУБД и её версию
- Команду SELECT
- Полученный результат – одно число.
Примечание: все возможные IP-адреса равноправны – это просто набор из четырёх допустимых чисел (от 0 до 255), разделенных точками.