Документация по PostgreSQL 9.4.1 | |||
---|---|---|---|
Пред. | Уровень выше | Глава 9. Функции и операторы | След. |
9.12. Функции и операторы для работы с сетевыми адресами
В Таблица 9-34 показаны операторы, работающие с типами cidr и inet. Операторы <<, <<=, >>, >>= и && проверяют включения подсетей, рассматривая только биты сети в обоих адресах (игнорируя биты узлов) и определяя, идентична ли одна сеть другой или её подсети.
Таблица 9-34. Операторы для типов cidr и inet
Оператор | Описание | Пример |
---|---|---|
< | меньше | inet '192.168.1.5' < inet '192.168.1.6' |
<= | меньше или равно | inet '192.168.1.5' <= inet '192.168.1.5' |
= | равно | inet '192.168.1.5' = inet '192.168.1.5' |
>= | больше или равно | inet '192.168.1.5' >= inet '192.168.1.5' |
> | больше | inet '192.168.1.5' > inet '192.168.1.4' |
<> | не равно | inet '192.168.1.5' <> inet '192.168.1.4' |
<< | содержится в | inet '192.168.1.5' << inet '192.168.1/24' |
<<= | равно или содержится в | inet '192.168.1/24' <<= inet '192.168.1/24' |
>> | содержит | inet '192.168.1/24' >> inet '192.168.1.5' |
>>= | равно или содержит | inet '192.168.1/24' >>= inet '192.168.1/24' |
&& | содержит или содержится в | inet '192.168.1/24' && inet '192.168.1.80/28' |
~ | битовый NOT | ~ inet '192.168.1.6' |
& | битовый AND | inet '192.168.1.6' & inet '0.0.0.255' |
| | битовый OR | inet '192.168.1.6' | inet '0.0.0.255' |
+ | сложение | inet '192.168.1.6' + 25 |
- | вычитание | inet '192.168.1.43' - 36 |
- | вычитание | inet '192.168.1.43' - inet '192.168.1.19' |
В Таблице 9-35 перечислены функции, работающие с типами cidr и inet. Функции abbrev
, host
и text
предназначены в основном для вывода данных в альтернативных форматах.
Таблица 9-35. Функции для типов cidr и inet
Функция | Тип результата | Описание | Пример | Результат |
---|---|---|---|---|
abbrev(inet) | text | вывод адрес в кратком текстовом виде | abbrev(inet '10.1.0.0/16') | 10.1.0.0/16 |
abbrev(cidr) | text | вывод адрес в кратком текстовом виде | abbrev(cidr '10.1.0.0/16') | 10.1/16 |
broadcast(inet) | inet | широковещательный адрес сети | broadcast('192.168.1.5/24') | 192.168.1.255/24 |
family(inet) | int | возвращает семейство адреса; 4 для адреса IPv4, 6 для IPv6 | family('::1') | 6 |
host(inet) | text | извлекает IP-адрес в виде текста | host('192.168.1.5/24') | 192.168.1.5 |
hostmask(inet) | inet | вычисляет маску узла для сетевого адреса | hostmask('192.168.23.20/30') | 0.0.0.3 |
masklen(inet) | int | выдаёт длину маски сети | masklen('192.168.1.5/24') | 24 |
netmask(inet) | inet | вычисляет маску сети для сетевого адреса | netmask('192.168.1.5/24') | 255.255.255.0 |
network(inet) | cidr | извлекает компонент сети из адреса | network('192.168.1.5/24') | 192.168.1.0/24 |
set_masklen(inet, int) | inet | задаёт размер маски для значения inet | set_masklen('192.168.1.5/24', 16) | 192.168.1.5/16 |
set_masklen(cidr, int) | cidr | задаёт размер маски для значения cidr | set_masklen('192.168.1.0/24'::cidr, 16) | 192.168.0.0/16 |
text(inet) | text | выводит в текстовом виде IP-адрес и длину маски | text(inet '192.168.1.5') | 192.168.1.5/32 |
Любое значение cidr можно привести к типу inet, явно или нет; поэтому все функции, показанные выше с типом inet, также будут работать со значениями cidr. (Некоторые из функций указаны отдельно для типов inet и cidr, потому что их поведение с разными типами различается.) Кроме того, значение inet тоже можно привести к типу cidr. При этом все биты справа от сетевой маски просто обнуляются, чтобы значение стало допустимым для типа cidr. К типам inet и cidr можно привести и обычные текстовые значения, используя обычный синтаксис, например: inet(выражение) или колонка::cidr.
В Таблице 9-36 приведена функция, предназначенная для работы с типом macaddr. Функция trunc(macaddr)
возвращает MAC-адрес, последние 3 байта в котором равны 0. Это может быть полезно для вычисления префикса, определяющего производителя.
Таблица 9-36. Функции macaddr
Функция | Тип результата | Описание | Пример | Результат |
---|---|---|---|---|
trunc(macaddr) | macaddr | обнуляет последние 3 байта | trunc(macaddr '12:34:56:78:90:ab') | 12:34:56:00:00:00 |
Тип macaddr также поддерживает стандартные реляционные операторы лексической сортировки (>, <= и т. д.) и операторы битовой арифметики (~, & и |), соответствующие операциям NOT, AND и OR.
Пред. | Начало | След. |
Геометрические функции и операторы | Уровень выше | Функции и операторы текстового поиска |