他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

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

PostgreSQL は IP と MAC アドレスを格納するデータ型を提供しています。これらのデータ型は入力値の検エラーチェックと専用の演算子と関数をいくつか提供しているので、テキストデータ型の替わりにこちらを使うことをお勧めします。

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

名称格納サイズ説明範囲
cidr12 バイトIP ネットワーク有効な IPv4 ネットワーク
inet12 バイトIP ホストとネットワーク有効な IPv4 ホストまたはネットワーク
macaddr6 バイトMAC アドレス通常のフォーマット

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

3.8.1. inet

inet は IP ホストアドレスとオプションでそのホストアドレスが所属するサブネット本体を 1 つのフィールドに保持します。サブネット本体はアドレスのネットワーク部(netmask)のビット数で表されます。もしネットマスクが 32 の場合、それは単一ホストのを意味し、サブネットを示しません。ネットワークのみを使用したい場合は inet ではなく cidr を利用してください。

このデータ型に対する入力フォーマットは x.x.x.x/y で、x.x.x.x が IP アドレスで、 y がネットマスクのビット数です。もし /y の部分を省略するとネットマスクは 32 となり、その値は単一ホストを表現します。ネットマスクが 32 の場合表示は /y の部分を抑制します。

3.8.2. cidr

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

いくつかの例を挙げてみましょう。

Table 3-20. 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.8.3. inetcidr データ型の違い

inet データ型と cidr データ型との基本的な相違は inet はネットマスクの右側に 0 でないビット値を受け付けますが、cidr では受け付けません。

Tip: もし inet もしくは cidr の値の出力フォーマットが気に入らないのであれば、関数 host()、text()、および abbrev() を試してください。

3.8.4. macaddr

macaddr データ型は MAC アドレスを保持します。と言うことは Ethernet カードのハードウェアアドレスです(MAC アドレスは他の目的でもつかわれますが)。以下はすべて同一のアドレスを指定します。 a から f までの桁は大文字小文字どちらでも構いません。出力は常に例示した最後の形式となります。

'08002b:010203'
'08002b-010203'
'0800.2b01.0203'
'08-00-2b-01-02-03'
'08:00:2b:01:02:03'

PostgreSQL のソース配付物の contrib/mac ディレクトリには MAC アドレスとハードウェア製造メーカー名の対応に使用できるツールが含まれています。