INET

INET数据类型存储IPv4或IPv6地址。

语法

INET的常量值可以使用解释文本、类型INET注释的字符串文本,或者强制类型转换为类型INET来表示。

INET常量可以使用以下格式表示:

  • IPv4

标准RFC791指定的4个八位字节格式,以十进制数字表示,并以句点分隔。地址之后可选择性添加子网掩码。示例:’190.0.0.0’,’190.0.0.0/ 24’。

  • IPv6

标准RFC8200指定格式的8个冒号分隔的4个十六进制数字组。 IPv6地址可以映射到IPv4地址。地址之后可选择性添加子网掩码。

示例: ‘2001:4f8:3:ba:2e0:81ff:fe22:d1f1’, ‘::ffff:192.168.0.1/24’

‘2001:4f8:3:ba:2e0:81ff:fe22:d1f1/120’。

​ 存储IPv4格式的INET时将占用32位;而存储IPv6格式的INET时将占用128位;因此,IPv4地址将在IPv6地址之前排序,包括IPv4映射的IPv6地址。

类型转换

INET值可以强制转换为具有“地址/子网”格式的STRING类型的值。

示例

示例1:使用INET创建表computers:

CREATE TABLE inets(c1 INET PRIMARY KEY);

CREATE TABLE

SHOW COLUMNS FROM inets;

column_name | data_type | is_nullable | column_default | generation_expression | indices | is_hidden

+—————————-+—————-+——————-+————————+———————————-+—————-+—————-+

c1 | INET | false | NULL | | {primary} | false

示例2:将INTERVAL类型的字段插入表intervals:

INSERT INTO inets VALUES (‘192.168.0.1’),(‘192.168.0.2/10’), (‘2001:4f8:3:ba:2e0:81ff:fe22:d1f1/120’);

INSERT 3

SELECT * FROM inets;

c1

+———————————————————+

192.168.0.2/10 192.168.0.1 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/120