3.7. ネットワークアドレスデータ型

Postgresには、IPとMACアドレスを格納するためのデータ型があります。 この型では入力された値と特別な演算子や関数のチェックを行うので文字データ型を 使用するよりもこちらをお使いになることをお勧めします。

Table 3-17. ネットワークアドレスデータ型

名称データベース上のバイト数説明有効範囲
cidr12 バイトIPネットワーク有効なIPv4ネットワーク
inet12 バイトIPホストとネットワーク有効なIPv4ホスト、またはネットワーク
macaddr6 バイトMAC アドレス通常のフォーマット

IPv6はまだサポートされていません。

3.7.1. inet

inet型はIPホストアドレスとオプションでそのホストアドレスの サブネットマスクの識別を1 つのフィールドに保持しています。 サブネットマスクの識別はアドレスのネットワークの部分("netmask")の ビットで表されます。もしネットマスクが32だった場合、 それはシングルホストを意味し、サブネットではありません。 ネットワークのみを使用したい場合はinet型ではなく cidr型をご利用下さい。

これらの関数を使う時の入力書式はx.x.x.x/yで、 x.x.x.xが インターネットホストアドレス、 yはネットマスクのビット数です。 もし/yの部分を省略すると、ネットマスクは32となり、 シングルホストを意味します。もしネットマスクが32の場合、画面では /yの部分は表示されません。

3.7.2. cidr

cidr型はIPネットワークの詳細を保持します。出入力フォーマットは クラス分けのない(classless networks)インターネットドメインルーティングにしたがっています。 クラス分けのないネットワークアドレスを指定するためのフォーマットは x.x.x.x/yで、x.x.x.xはネットワークアドレス、yはネットマスクのビット数です。もしyが が省略された場には、入力時に書かれたオクテットのすべてが含められるように 大きさが確保されること以外は、以前のクラス名付けシステムシステムを元に計算されます。

下記は参考例です。

Table 3-18. cidr型入力例

CIDR 入力CIDR 表示CIDR略
192.168.100.128/25192.168.100.128/25192.168.100.128/25
192.168/24192.168.0.0/24192.168.0/24
192.168/25192.168.0.0/25192.168.0.0/25
192.168.1192.168.1.0/24192.168.1/24
192.168192.168.0.0/24192.168.0/24
128.1128.1.0.0/16128.1/16
128128.0.0.0/16128.0/16
128.1.2128.1.2.0/24128.1.2/24
10.1.210.1.2.0/2410.1.2/24
10.110.1.0.0/1610.1/16
1010.0.0.0/810/8

3.7.3. inet型とcidr型の違い

inet型とcidr型の根本的な違いは、inet型は ネットマスクの右側にゼロ以外のビット値を受けつけますが、cidr型は 受けつけないということです。

Tip: inet型やcidr型の値のフォーマットを 変更したい場合は、host()、text()、 abbrev()の関数をご利用下さい。

3.7.4. macaddr

macaddr型はMACアドレス(イーサネットカードのアドレス; 他の用途にも使用されることもありますが)を保持します。 '08002b:010203''08002b-010203''0800.2b01.0203''08-00-2b-01-02-03''08:00:2b:01:02:03'など、様々なフォーマットでの入力が可能で、 上記のものはすべて同じアドレスと見なされます。a through f までの桁では、大文字と小文字の両方が入力可能です。出力は必ず与えられた後者の形式となります。

Postgresのソースディストリビューション内の contrib/macディレクトリには MACアドレスとハードウェアの製造者の対応ができるツールがあります。