PostgreSQL は IP と MAC アドレスを格納するデータ型を提供しています。これらのデータ型は入力値の検エラーチェックと専用の演算子と関数をいくつか提供しているので、テキストデータ型の替わりにこちらを使うことをお勧めします。
Table 3-19. ネットワークアドレスデータ型
名称 | 格納サイズ | 説明 | 範囲 |
---|---|---|---|
cidr | 12 バイト | IP ネットワーク | 有効な IPv4 ネットワーク |
inet | 12 バイト | IP ホストとネットワーク | 有効な IPv4 ホストまたはネットワーク |
macaddr | 6 バイト | MAC アドレス | 通常のフォーマット |
IP v6 はまだサポートされていません。
inet は IP ホストアドレスとオプションでそのホストアドレスが所属するサブネット本体を 1 つのフィールドに保持します。サブネット本体はアドレスのネットワーク部(netmask)のビット数で表されます。もしネットマスクが 32 の場合、それは単一ホストのを意味し、サブネットを示しません。ネットワークのみを使用したい場合は inet ではなく cidr を利用してください。
このデータ型に対する入力フォーマットは x.x.x.x/y で、x.x.x.x が IP アドレスで、 y がネットマスクのビット数です。もし /y の部分を省略するとネットマスクは 32 となり、その値は単一ホストを表現します。ネットマスクが 32 の場合表示は /y の部分を抑制します。
cidr データ型は IP ネットワークの詳細を保持します。入出力フォーマットはクラス分けのないインターネットドメインルーティング協定に従います。クラス分けのないネットワークアドレスを指定する時のフォーマットは x.x.x.x/y で、x.x.x.x がネットワークアドレス、y がネットマスクのビット数です。もし y が省略された場合には、入力時に書き込まれたオクテットすべてが含まれるように大きさが確保されること以外は、従来のクラス付きアドレス番号指定システムに従って計算されます。
いくつかの例を挙げてみましょう。
Table 3-20. cidr データ型入力例
CIDR 入力 | CIDR 表示 | 省略形(CIDR) |
---|---|---|
192.168.100.128/25 | 192.168.100.128/25 | 192.168.100.128/25 |
192.168/24 | 192.168.0.0/24 | 192.168.0/24 |
192.168/25 | 192.168.0.0/25 | 192.168.0.0/25 |
192.168.1 | 192.168.1.0/24 | 192.168.1/24 |
192.168 | 192.168.0.0/24 | 192.168.0/24 |
128.1 | 128.1.0.0/16 | 128.1/16 |
128 | 128.0.0.0/16 | 128.0/16 |
128.1.2 | 128.1.2.0/24 | 128.1.2/24 |
10.1.2 | 10.1.2.0/24 | 10.1.2/24 |
10.1 | 10.1.0.0/16 | 10.1/16 |
10 | 10.0.0.0/8 | 10/8 |
inet データ型と cidr データ型との基本的な相違は inet はネットマスクの右側に 0 でないビット値を受け付けますが、cidr では受け付けません。
Tip: もし inet もしくは cidr の値の出力フォーマットが気に入らないのであれば、関数 host()、text()、および abbrev() を試してください。
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 アドレスとハードウェア製造メーカー名の対応に使用できるツールが含まれています。