バージョンごとのドキュメント一覧

9.12. ネットワークアドレス関数と演算子 #

<title>Network Address Functions and Operators</title>

The IP network address types, <type>cidr</type> and <type>inet</type>, support the usual comparison operators shown in <xref linkend="functions-comparison-op-table"/> as well as the specialized operators and functions shown in <xref linkend="cidr-inet-operators-table"/> and <xref linkend="cidr-inet-functions-table"/>. IPネットワークアドレス型であるcidrinet表 9.1に示す通常の比較演算子に加え、表 9.39表 9.40で示す特定目的の演算子と関数をサポートしています。

Any <type>cidr</type> value can be cast to <type>inet</type> implicitly; therefore, the operators and functions shown below as operating on <type>inet</type> also work on <type>cidr</type> values. (Where there are separate functions for <type>inet</type> and <type>cidr</type>, it is because the behavior should be different for the two cases.) Also, it is permitted to cast an <type>inet</type> value to <type>cidr</type>. When this is done, any bits to the right of the netmask are silently zeroed to create a valid <type>cidr</type> value. すべてのcidr値は暗黙的にinetにキャストできます。ですから以下で示すinetで使える演算子と関数はcidrでも使えます。 (inetcidr用の別々の関数があるのは、この両者で振る舞いが異なっているべきである場合があるからです。) またinet値をcidrにキャストすることが許されています。 これが行われると、ネットマスクの右側のすべてのビットは有効なcidr値を作るために暗黙的にゼロになります。

表9.39 IPアドレス演算子

<title>IP Address Operators</title>

Operator 演算子

Description 説明

Example(s)

inet << inetboolean

Is subnet strictly contained by subnet? This operator, and the next four, test for subnet inclusion. They consider only the network parts of the two addresses (ignoring any bits to the right of the netmasks) and determine whether one network is identical to or a subnet of the other. サブネットが完全にサブネットに含まれているか? この演算子と次の4つの演算子はサブネットの包含をテストします。 それらは2つのアドレスのネットワーク部分だけを考慮し(ネットマスクの右のビットは無視されます)、ネットワークが他のネットワークと同一か、あるいはサブネットであるかどうかを決定します。

inet '192.168.1.5' << inet '192.168.1/24't

inet '192.168.0.5' << inet '192.168.1/24'f

inet '192.168.1/24' << inet '192.168.1/24'f

inet <<= inetboolean

Is subnet contained by or equal to subnet? サブネットがサブネットに含まれているか、あるいは同じか?

inet '192.168.1/24' <<= inet '192.168.1/24't

inet >> inetboolean

Does subnet strictly contain subnet? サブネットが完全にサブネットを含んでいるか?

inet '192.168.1/24' >> inet '192.168.1.5't

inet >>= inetboolean

Does subnet contain or equal subnet? サブネットがサブネットを含んでいるか、あるいは同じか?

inet '192.168.1/24' >>= inet '192.168.1/24't

inet && inetboolean

Does either subnet contain or equal the other? サブネットが他を含んでいるか、あるいは同じか?

inet '192.168.1/24' && inet '192.168.1.80/28't

inet '192.168.1/24' && inet '192.168.2.0/28'f

~ inetinet

Computes bitwise NOT. ビット否定を計算します。

~ inet '192.168.1.6'63.87.254.249

inet & inetinet

Computes bitwise AND. ビット積を計算します。

inet '192.168.1.6' & inet '0.0.0.255'0.0.0.6

inet | inetinet

Computes bitwise OR. ビット和を計算します。

inet '192.168.1.6' | inet '0.0.0.255'192.168.1.255

inet + bigintinet

Adds an offset to an address. オフセットをアドレスに加算します。

inet '192.168.1.6' + 25192.168.1.31

bigint + inetinet

Adds an offset to an address. オフセットをアドレスに加算します。

200 + inet '::ffff:fff0:1'::ffff:255.240.0.201

inet - bigintinet

Subtracts an offset from an address. アドレスからオフセットを減算します。

inet '192.168.1.43' - 36192.168.1.7

inet - inetbigint

Computes the difference of two addresses. 2つのアドレスの差を計算します。

inet '192.168.1.43' - inet '192.168.1.19'24

inet '::1' - inet '::ffff:1'-4294901760


表9.40 IPアドレス関数

<title>IP Address Functions</title>

Function 関数

Description 説明

Example(s)

abbrev ( inet ) → text

Creates an abbreviated display format as text. (The result is the same as the <type>inet</type> output function produces; it is <quote>abbreviated</quote> only in comparison to the result of an explicit cast to <type>text</type>, which for historical reasons will never suppress the netmask part.) 表示用テキスト省略形を作成します。 (結果はinet出力関数が生成するものと同じです。明示的にtextにキャストしたもの(歴史的な理由でネットマスク部分が抑止されていません)と比べると省略されているだけです。

abbrev(inet '10.1.0.0/32')10.1.0.0

abbrev ( cidr ) → text

Creates an abbreviated display format as text. (The abbreviation consists of dropping all-zero octets to the right of the netmask; more examples are in <xref linkend="datatype-net-cidr-table"/>.) 表示用テキスト省略形を作成します。 (ネットマスクの右側のすべてのゼロオクテットを削除することによって省略形にします。表 8.22に他の例があります。)

abbrev(cidr '10.1.0.0/16')10.1/16

broadcast ( inet ) → inet

Computes the broadcast address for the address's network. アドレスのネットワーク部のネットワークブロードキャストアドレスを計算します。

broadcast(inet '192.168.1.5/24')192.168.1.255/24

family ( inet ) → integer

Returns the address's family: <literal>4</literal> for IPv4, <literal>6</literal> for IPv6. アドレスファミリーを返します。IPv4なら4で、IPv6なら6です。

family(inet '::1')6

host ( inet ) → text

Returns the IP address as text, ignoring the netmask. IPアドレスをテキストとして返します。ネットマスクは無視されます。

host(inet '192.168.1.0/24')192.168.1.0

hostmask ( inet ) → inet

Computes the host mask for the address's network. アドレスのネットワークに対するホストマスクを計算します。

hostmask(inet '192.168.23.20/30')0.0.0.3

inet_merge ( inet, inet ) → cidr

Computes the smallest network that includes both of the given networks. 与えられたネットワークを両方含む最小のネットワークを計算します。

inet_merge(inet '192.168.1.5/24', inet '192.168.2.5/24')192.168.0.0/22

inet_same_family ( inet, inet ) → boolean

Tests whether the addresses belong to the same IP family. アドレスが同じIPファミリーに属しているかどうかを判定します。

inet_same_family(inet '192.168.1.5/24', inet '::1')f

masklen ( inet ) → integer

Returns the netmask length in bits. ネットマスクのビット長を返します。

masklen(inet '192.168.1.5/24')24

netmask ( inet ) → inet

Computes the network mask for the address's network. アドレスのネットワークに対するネットワークマスクを計算します。

netmask(inet '192.168.1.5/24')255.255.255.0

network ( inet ) → cidr

Returns the network part of the address, zeroing out whatever is to the right of the netmask. (This is equivalent to casting the value to <type>cidr</type>.) ネットマスクの右側をすべてゼロにしてアドレスのネットワーク部を返します。 (これは値をcidrにキャストするのと同じです。)

network(inet '192.168.1.5/24')192.168.1.0/24

set_masklen ( inet, integer ) → inet

Sets the netmask length for an <type>inet</type> value. The address part does not change. ネットマスク長をinet値に設定します。 アドレスの部分は変更しません。

set_masklen(inet '192.168.1.5/24', 16)192.168.1.5/16

set_masklen ( cidr, integer ) → cidr

Sets the netmask length for a <type>cidr</type> value. Address bits to the right of the new netmask are set to zero. ネットマスク長をcidr値に設定します。 新しいネットマスクの右側のアドレスビットは0に設定されます。

set_masklen(cidr '192.168.1.0/24', 16)192.168.0.0/16

text ( inet ) → text

Returns the unabbreviated IP address and netmask length as text. (This has the same result as an explicit cast to <type>text</type>.) 省略形ではないIPアドレスとネットマスク長をテキストとして返します。 (これはtextに明示的にキャストするのと同じ効果があります。)

text(inet '192.168.1.5')192.168.1.5/32


ヒント

The <function>abbrev</function>, <function>host</function>, and <function>text</function> functions are primarily intended to offer alternative display formats for IP addresses. 関数abbrevhost、およびtext、は主として、代替のIPアドレスの整形表示を提供する目的のものです。

The MAC address types, <type>macaddr</type> and <type>macaddr8</type>, support the usual comparison operators shown in <xref linkend="functions-comparison-op-table"/> as well as the specialized functions shown in <xref linkend="macaddr-functions-table"/>. In addition, they support the bitwise logical operators <literal>~</literal>, <literal>&amp;</literal> and <literal>|</literal> (NOT, AND and OR), just as shown above for IP addresses. MACアドレス型であるmacaddrmacaddr8は、表 9.1で示す通常の比較演算子と表 9.41で示す特定目的のための関数をサポートします。 加えて上記のIPアドレス用に示したのと同様に、ビットごとの論理演算子~&|(NOT、AND、OR)をサポートします。

表9.41 MACアドレス関数

<title>MAC Address Functions</title>

Function 関数

Description 説明

Example(s)

trunc ( macaddr ) → macaddr

Sets the last 3 bytes of the address to zero. The remaining prefix can be associated with a particular manufacturer (using data not included in <productname>PostgreSQL</productname>). アドレスの終わりの3バイトをゼロに設定します。 残りの前の部分は(PostgreSQLには含まれないデータを使って)特定の製造業者に関連付けることもできます。

trunc(macaddr '12:34:56:78:90:ab')12:34:56:00:00:00

trunc ( macaddr8 ) → macaddr8

Sets the last 5 bytes of the address to zero. The remaining prefix can be associated with a particular manufacturer (using data not included in <productname>PostgreSQL</productname>). アドレスの終わりの5バイトをゼロに設定します。 残りの前の部分は(PostgreSQLには含まれないデータを使って)特定の製造業者に関連付けることもできます。

trunc(macaddr8 '12:34:56:78:90:ab:cd:ef')12:34:56:00:00:00:00:00

macaddr8_set7bit ( macaddr8 ) → macaddr8

Sets the 7th bit of the address to one, creating what is known as modified EUI-64, for inclusion in an IPv6 address. 7番目のビットを1にし、修正EUI-64と呼ばれる形式にして、IPv6アドレスに含められるようにします。

macaddr8_set7bit(macaddr8 '00:34:56:ab:cd:ef')02:34:56:ff:fe:ab:cd:ef