| PostgreSQL 9.1.5文書 | ||||
|---|---|---|---|---|
| 前のページ | 巻戻し | 第 9章関数と演算子 | 早送り | 次のページ | 
表9-33に、inet型およびcidr型で使用可能な演算子を示します。演算子 <<、<<=、>>、および>>=はサブネットに含まれているかどうかを調べるものです。ネットワークの部分のみを考慮(ネットワークアドレスのホスト部分を無視)して2つのネットワークアドレスが等しいか、もしくは一方のネットワークが他方のサブネットになっているかを特定します。
表 9-33. cidrとinet演算子
| 演算子 | 説明 | 例 | 
|---|---|---|
| < | 未満 | inet '192.168.1.5' < inet '192.168.1.6' | 
| <= | 未満もしくは等しい(以下) | inet '192.168.1.5' <= inet '192.168.1.5' | 
| = | 等しい | inet '192.168.1.5' = inet '192.168.1.5' | 
| >= | より大きいもしくは等しい(以上) | inet '192.168.1.5' >= inet '192.168.1.5' | 
| > | より大きい | inet '192.168.1.5' > inet '192.168.1.4' | 
| <> | 等しくない | inet '192.168.1.5' <> inet '192.168.1.4' | 
| << | 内包される | inet '192.168.1.5' << inet '192.168.1/24' | 
| <<= | 内包されるか等しい | inet '192.168.1/24' <<= inet '192.168.1/24' | 
| >> | 内包する | inet '192.168.1/24' >> inet '192.168.1.5' | 
| >>= | 内包するか等しい | inet '192.168.1/24' >>= inet '192.168.1/24' | 
| ~ | ビット否定 | ~ inet '192.168.1.6' | 
| & | ビット積 | inet '192.168.1.6' & inet '0.0.0.255' | 
| | | ビット和 | inet '192.168.1.6' | inet '0.0.0.255' | 
| + | 加算 | inet '192.168.1.6' + 25 | 
| - | 減算 | inet '192.168.1.43' - 36 | 
| - | 減算 | inet '192.168.1.43' - inet '192.168.1.19' | 
  
   表9-34に、inet型およびcidr型で使用可能な関数を示します。
関数abbrev、host()、およびtext()、は主として、代替の整形表示を提供する目的のものです。
  
表 9-34. cidrおよびinet型関数
| 関数 | 戻り値 | 説明 | 例 | 結果 | 
|---|---|---|---|---|
| abbrev(inet) | text | 表示用テキスト省略形 | abbrev(inet '10.1.0.0/16') | 10.1.0.0/16 | 
| abbrev(cidr) | text | 表示用テキスト省略形 | abbrev(cidr '10.1.0.0/16') | 10.1/16 | 
| broadcast(inet) | inet | ネットワークブロードキャストアドレス | broadcast('192.168.1.5/24') | 192.168.1.255/24 | 
| family(inet) | int | アドレスファミリの取り出し。IPv4では4、IPv6では6。 | family('::1') | 6 | 
| host(inet) | text | IPアドレスをテキストで抽出 | host('192.168.1.5/24') | 192.168.1.5 | 
| hostmask(inet) | inet | ネットワーク用のホストマスクの構築 | hostmask('192.168.23.20/30') | 0.0.0.3 | 
| masklen(inet) | int | ネットマスク長の抽出 | masklen('192.168.1.5/24') | 24 | 
| netmask(inet) | inet | ネットワーク用ネットマスクの構築 | netmask('192.168.1.5/24') | 255.255.255.0 | 
| network(inet) | cidr | ネットワークアドレスからネットワーク部を抽出 | network('192.168.1.5/24') | 192.168.1.0/24 | 
| set_masklen(inet, int) | inet | inet値のネットマスク長を設定 | set_masklen('192.168.1.5/24', 16) | 192.168.1.5/16 | 
| set_masklen(cidr, int) | cidr | cidr値のネットマスク長を設定 | set_masklen('192.168.1.0/24'::cidr, 16) | 192.168.0.0/16 | 
| text(inet) | text | IPアドレスとネットマスク長をテキストで抽出 | text(inet '192.168.1.5') | 192.168.1.5/32 | 
cidr値はすべて、暗黙的または明示的にinet型にキャスト可能です。 したがって、上で示したinetに対する操作を行う関数はcidr値でも動作します。(inetとcidrで別々に関数が存在しますが、それは、この2つで動作に違いがあるためです。)また、inet値からcidrへのキャストも許されます。これが行われると、ネットマスクの右側のビットは、cidrとして有効な値とするために0となります。さらに、通常のキャスト構文、例えば、inet(expression)やcolname::cidrを使用して、テキスト値をinetやcidrにキャストすることもできます。
  
   表9-35に、macaddr型で使用可能な関数を示します。関数trunc(macaddr)は終わりの3バイトがゼロに設定されたMACアドレスを返します。これは、残った接頭部を製造者に対応させることに使えます。
  
表 9-35. macaddr型関数
| 関数 | 戻り値 | 説明 | 例 | 結果 | 
|---|---|---|---|---|
| trunc(macaddr) | macaddr | 終わりの3バイトをゼロに設定 | trunc(macaddr '12:34:56:78:90:ab') | 12:34:56:00:00:00 | 
macaddr型は(>、<=等の)辞書編集順に並べる標準関係演算子もサポートします。