⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
inet Extension

inet 扩展定义了 INET 数据类型,用于存储 IPv4IPv6 互联网地址。它支持用于子网掩码的 CIDR 表示法(例如,198.51.100.0/222001:db8:3c4d::/48)。

Installing and Loading

inet 扩展将在首次使用时从官方扩展仓库中透明地 自动加载。 如果您希望手动安装并加载它,请运行:

INSTALL inet;
LOAD inet;

Examples

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 函数

可以使用HOST()函数提取INET值的主机组件。

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 主机(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         │
├────────────────────────┤
│ &                      │
└────────────────────────┘