ネットワークアドレス型

PostgreSQL 9.0.0文書
前のページ | 巻戻し | 第 8章データ型 | 早送り | 次のページ

# 8.9. ネットワークアドレス型

PostgreSQLは、表8-21に示すように、IPv4アドレス、IPv6アドレス、MACアドレスを格納するデータ型を提供します。 ネットワークアドレスを格納するには普通のテキストデータ型の代わりにこれらの型を使うことの方が優れています。 なぜなら、これらのデータ型は入力値のエラー検査と専用の演算子と関数を提供しているからです （項9.12を参照してください）。

表 8-21. ネットワークアドレスデータ型

名前 | 格納サイズ | 説明
--- | --- | ---
`cidr` | 7もしくは19バイト | IPv4、およびIPv6ネットワーク
`inet` | 7もしくは19バイト | IPv4もしくはIPv6ホスト、およびネットワーク
`macaddr` | 6バイト | MACアドレス

`inet`もしくは`cidr`をソートする時、IPv4アドレスは常にIPv6よりも前にソートされます。 ::10.2.3.4や::ffff:10.4.3.2などIPv6アドレス内に埋め込まれた、もしくは関連付けされたIPv4アドレスも同様です。

## 8.9.1. `inet`

`inet`型はIPv4もしくはIPv6ホストアドレスとオプションでそのサブネットを１つのフィールドに保持します。 サブネットはホストアドレスのうち何ビットがネットワークアドレス（"ネットマスク"）を表すかを指定することで表現されます。 もしネットマスクが32の場合、IPv4では単一ホストを意味し、サブネットを示しません。 IPv6ではアドレス長は128ビットです。 そのため128ビットが一意なホストアドレスを指定します。 ネットワークのみを使用したい場合は`inet`ではなく`cidr`型を利用してください。

このデータ型に対する入力書式は、IPv4、IPv6両方とも`address/y`です。 `y`がネットマスクのビット数です。 もし`/y`部分がない場合、ネットマスクはIPv4では32、IPv6では128となり、つまり、その値は単一ホストを表現します。 ネットマスクが単一ホストを表す場合、その表示時、`/y`の部分は抑制されます。

## 8.9.2. `cidr`

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

表8-22に例をいくつか示します。

表 8-22. `cidr`データ型入力例

`cidr`入力 | `cidr`出力 | ``abbrev(`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
10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3/32
2001:4f8:3:ba::/64 | 2001:4f8:3:ba::/64 | 2001:4f8:3:ba::/64
2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1
::ffff:1.2.3.0/120 | ::ffff:1.2.3.0/120 | ::ffff:1.2.3/120
::ffff:1.2.3.0/128 | ::ffff:1.2.3.0/128 | ::ffff:1.2.3.0/128

## 8.9.3. `inet`と`cidr`データ型の違い

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

> ティップ: もし`inet`もしくは`cidr`の値の出力書式が気に入らないのであれば、関数`host`、`text`および`abbrev`を試してください。

## 8.9.4. `macaddr`

`macaddr`データ型は例えばイーサネットカードのハードウェアアドレスとして知られるMACアドレスを保持します（MACアドレスは他の目的でも使われますが）。 入力は以下の形式を受け入れます。

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

これらの例はすべて同一のアドレスを指定します。 `a`から`f`までの桁は大文字小文字どちらでも構いません。 出力は常に最初に示された形式となります。

IEEE標準802-2001では、2番目の書式（ハイフンを使用）をMACアドレスの正規の表現と規定しています。 また、最初の書式（コロンを使用）をビット反転記法、つまり08-00-2b-01-02-03は01:00:4D:08:04:0Cであると規定しています。 この規約は現在ではほぼ無視され、古びたネットワーク（トークンリングなど）のみに関連するものです。 PostgreSQLではビット反転に関する準備をしていません。 また、すべての受付け可能な書式では正規のLSB順を使用します。

残る４つの入力書式はどの標準にも属しません。

前のページ | ホーム | 次のページ
幾何データ型 | 上に戻る | ビット列データ型