Расширение inet
Расширение inet определяет тип данных INET для хранения IPv4 и IPv6 адресов Интернета. Оно поддерживает нотацию CIDR для масок подсети (например, 198.51.100.0/22, 2001:db8:3c4d::/48).
Установка и загрузка
Расширение inet будет прозрачно автозагружаться при первом использовании из официального репозитория расширений. Если вы хотите установить и загрузить его вручную, выполните:
INSTALL inet; LOAD inet;
Примеры
SELECT '127.0.0.1'::INET AS ipv4, '2001:db8:3c4d::/48'::INET AS ipv6;
| ipv4 | ipv6 |
|---|---|
| 127.0.0.1 | 2001:db8:3c4d::/48 |
CREATE TABLE tbl (id INTEGER, ip INET);
INSERT INTO tbl VALUES
(1, '192.168.0.0/16'),
(2, '127.0.0.1'),
(3, '8.8.8.8'),
(4, 'fe80::/10'),
(5, '2001:db8:3c4d:15::1a2f:1a2b');
SELECT * FROM tbl; | id | ip |
|---|---|
| 1 | 192.168.0.0/16 |
| 2 | 127.0.0.1 |
| 3 | 8.8.8.8 |
| 4 | fe80::/10 |
| 5 | 2001:db8:3c4d:15::1a2f:1a2b |
Операции с INET значениями
INET значения могут сравниваться естественным образом, и IPv4 будет сортироваться раньше IPv6. Кроме того, IP-адреса могут быть изменены путем добавления или вычитания целых чисел.
CREATE TABLE tbl (cidr INET);
INSERT INTO tbl VALUES
('127.0.0.1'::INET + 10),
('fe80::10'::INET - 9),
('127.0.0.1'),
('2001:db8:3c4d:15::1a2f:1a2b');
SELECT cidr FROM tbl ORDER BY cidr ASC; | cidr |
|---|
| 127.0.0.1 |
| 127.0.0.11 |
| 2001:db8:3c4d:15::1a2f:1a2b |
| fe80::7 |
Функция host
Компонент хоста значения INET может быть извлечён с помощью функции HOST()
CREATE TABLE tbl (cidr INET);
INSERT INTO tbl VALUES
('192.168.0.0/16'),
('127.0.0.1'),
('2001:db8:3c4d:15::1a2f:1a2b/96');
SELECT cidr, host(cidr) FROM tbl; | cidr | host(cidr) |
|---|---|
| 192.168.0.0/16 | 192.168.0.0 |
| 127.0.0.1 | 127.0.0.1 |
| 2001:db8:3c4d:15::1a2f:1a2b/96 | 2001:db8:3c4d:15::1a2f:1a2b |
Функции экранирования и деэкранирования HTML
SELECT html_escape('&'); ┌──────────────────┐
│ html_escape('&') │
│ varchar │
├──────────────────┤
│ & │
└──────────────────┘ SELECT html_unescape('&'); ┌────────────────────────┐
│ html_unescape('&') │
│ varchar │
├────────────────────────┤
│ & │
└────────────────────────┘
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/extensions/inet.html