{"kind": "type", "slug": "macaddr8", "name": "macaddr8", "major": "18", "snapshot": {"casts": [{"castfunc": "macaddr8", "castmethod": "f", "castsource": "macaddr", "casttarget": "macaddr8", "castcontext": "i"}, {"castfunc": "macaddr", "castmethod": "f", "castsource": "macaddr8", "casttarget": "macaddr", "castcontext": "i"}], "facts": [{"label": "目录名称", "value": "pg_catalog.macaddr8"}, {"label": "类型 OID", "value": "774"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "8 字节"}, {"label": "存储策略", "value": "plain"}, {"label": "输入函数", "value": "macaddr8_in"}, {"label": "输出函数", "value": "macaddr8_out"}, {"label": "手册中的声明", "value": "macaddr8"}, {"label": "存储大小", "value": "8 字节"}, {"label": "手册说明", "value": "MAC 地址（EUI-64 格式）"}], "ranges": [], "aliases": [], "catalog": {"oid": "774", "descr": "XX:XX:XX:XX:XX:XX:XX:XX, MAC address", "typacl": "_null_", "typlen": "8", "typelem": "0", "typname": "macaddr8", "typsend": "macaddr8_send", "typtype": "b", "typalign": "i", "typarray": "0", "typbyval": "f", "typdelim": "','", "typinput": "macaddr8_in", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "macaddr8_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "macaddr8_recv", "typstorage": "p", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "-", "typdefaultbin": "_null_", "array_type_oid": "775", "typispreferred": "f", "array_type_name": "_macaddr8"}, "related": [{"url": "/wiki/catalog/pg_type/?v=18", "label": "pg_type 系统目录"}, {"url": "/wiki/catalog/pg_cast/?v=18", "label": "pg_cast 系统目录"}, {"url": "/wiki/catalog/pg_operator/?v=18", "label": "pg_operator 系统目录"}, {"url": "/wiki/catalog/pg_opclass/?v=18", "label": "pg_opclass 系统目录"}, {"url": "/wiki/type/arrays/?v=18", "label": "数组"}, {"url": "/wiki/indexam/brin/?v=18", "label": "brin 索引访问方法"}, {"url": "/wiki/indexam/btree/?v=18", "label": "btree 索引访问方法"}, {"url": "/wiki/indexam/hash/?v=18", "label": "hash 索引访问方法"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_files": {"doc/src/sgml/datatype.sgml": "86328daa77e20d81d222376ec0306d9841a17104e436c08d138eb763aefb3700", "src/include/catalog/pg_am.h": "3426799df799f32163fcc0765f43dbdb5e88e626acf31284fef9fc6014b69d8e", "src/include/catalog/pg_am.dat": "b3cb86b102a42fb0024cbd99779c9897afb40d12a71f5cc5a0e5aee7ff2f9969", "src/include/catalog/pg_cast.h": "de585c7df687d698e7d1d100dce8a794ac9da52414ea48169191019178c8f053", "src/include/catalog/pg_proc.h": "f7d59f07c5b95e2f3c7141762a0f576e8a3af7581ba54c27537f4d500472bea5", "src/include/catalog/pg_type.h": "8fb198749fd82b6c1818a3c18455f226f66116fcfeb3d4959c65ce3fda22802e", "src/include/catalog/pg_range.h": "45546d952b5181f989bd9234721897fc2b37005c8e49ce2ddc156f26974c3ca4", "src/include/catalog/pg_cast.dat": "97911281ca2c81917394ccb2ec13367e37c6801fd461d5e1a3d2f28b911b46b2", "src/include/catalog/pg_proc.dat": "1f934ce80d460159dda137714374a35f9896315ea2476709cbb4da13b38ef95a", "src/include/catalog/pg_type.dat": "5f5887b75677cba2d4a1a0cfeb355df5ed91f85d385fac88bd8d7c605b3578f9", "src/include/catalog/pg_opclass.h": "9c218537806c8ef0398302faaca7f91315dfc1198c48706cebffb479b68defaf", "src/include/catalog/pg_range.dat": "5c2271f8e89e9378d1887204e5785060b77405b5f0ff3e6c719250c9c1dcfcc4", "src/include/catalog/pg_operator.h": "621b18cfffe102413d79b746ce7a10f77fc60fdd097bac34c22b31070d3ee3c4", "src/include/catalog/pg_opfamily.h": "e1f5fc8aebd3042df847455bf66bf755f768c2aa8a9b03d22f7ec8563eba59c0", "src/include/catalog/pg_opclass.dat": "4ee7d3619a6aa106e1c0db55de903931c7d11b1c60ba053a022519c55f8ee668", "src/include/catalog/pg_operator.dat": "5d35b9b2ef5f9797cc815263927ef8a12367fedace53e828b4e8b320e2a7f703", "src/include/catalog/pg_opfamily.dat": "3b694879027b858f2ecf1fa1152b7e30c6e15a216ba99c2384291c30e9d52311"}, "manual_sha256": {"arrays.html": "0e1d5c5a7b4a949d4439995f44f74ad4264e050d16eb9ad2a850fbaee04032df", "domains.html": "82d486973ccc35d14276627a67ac76b434452f23f9ed4d8aa3fbb01fdf285fc2", "datatype.html": "e581f67c74e42006289638c8659e9b338adbfd7f068bd8bf2b3be3880fcd2254", "rowtypes.html": "74f99e029c3a9edfd3e18810ba3c8cb66d3aada91eb67b86476560871e6617e9", "rangetypes.html": "e4960abc7ce8e51d794f94f1e57b099d30b7f75dd7f2b23a960eef91f6291c33", "datatype-bit.html": "c49124aad561636c18080b9e09572fde7785a6b9eae86f5a33283f0fd6774c37", "datatype-oid.html": "8b3360302225f08ae72716ce1804596de95b568e5d31f788cb4597427b28cc38", "datatype-xml.html": "061fc2295b7b69be704f0a741b8decd10ad721059f871fb0243c669bb54d7822", "datatype-enum.html": "cab38e53222e30cc94b24de4b33634fd22d7c93f58ebcf35f646c9b8da78fae8", "datatype-json.html": "650162a05b660146b500a205d523374d00aee117a6a6240d30262be51b6e33e5", "datatype-uuid.html": "292b307b3223c6182bdba687e7f69e6dca9038430143ad79d56327f6ed4c3246", "datatype-money.html": "8b29c14b90679683ac5c472b59a0a7e2853f32cc7db43fab417b2697a6879964", "functions-info.html": "78ac80bf81da2e4f4a33f3b850faa86f0f58ec54a083d6c31da557907de0df87", "catalog-pg-type.html": "ea9c9313bab8e92a7da18ebc50c7ff1f908dd80999a7e0ca3bbc82ba626c58d4", "datatype-binary.html": "0c03ec47b76e37888a3da7f5dcfd340128a5d356642a85185cc9ebe17856a904", "datatype-pg-lsn.html": "339172f5107cc7eb7139bec911277647219e92a532cebd0f3da0a5dacf8195af", "datatype-pseudo.html": "c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4", "datatype-boolean.html": "b633f663e6c8276e7056287640c413aa79dbc15d5353cee0d41653d58d376956", "datatype-numeric.html": "b74619f7ac2f1ca9f85c48073df78c33dd30e464e61baba6008634534edcb500", "sql-createdomain.html": "e94f927196de1b0ea1ce35cd4603c1f6f544439adcc0edf1c4222358e832245b", "datatype-datetime.html": "e366275d8b13845bfa4ef0d68faa093e5f3ecb708a1ec870cbcbf7e425b85699", "datatype-character.html": "c73eebe413ea709a7792e4cfc3cfe9fb68cb496ebe83c3ebaa9d09f8c40d0f73", "datatype-geometric.html": "0eb3053cfe7d6b0a4b5592c5d7af8d97cae527e87f063c5793413bcba5c14cd9", "datatype-net-types.html": "96846e641cc37727ddcd8b8a1aa0dbe33cd9787760a2b4efb0dcb9403d5be63f", "datatype-textsearch.html": "4b15e05be8b49a71b28aea22f2c46d0dbf639a91e7b4fe129a4c737c6daad47c"}, "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "https://pg.center/docs/18/datatype-net-types.html", "path": "datatype-net-types.html", "label": "PostgreSQL 18 English manual", "sha256": "96846e641cc37727ddcd8b8a1aa0dbe33cd9787760a2b4efb0dcb9403d5be63f", "language": "en", "original_url": "/docs/18/datatype-net-types.html"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}], "coverage": "source inventory; exact declared input types for operator classes", "sections": [], "operators": [{"oid": "3362", "descr": "equal", "oprcom": "=(macaddr8,macaddr8)", "oprcode": "macaddr8_eq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": "=", "oprrest": "eqsel", "oprowner": "POSTGRES", "oprright": "macaddr8", "oprnegate": "<>(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "t", "oprcanmerge": "t", "oprnamespace": "pg_catalog"}, {"oid": "3363", "descr": "not equal", "oprcom": "<>(macaddr8,macaddr8)", "oprcode": "macaddr8_ne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": "<>", "oprrest": "neqsel", "oprowner": "POSTGRES", "oprright": "macaddr8", "oprnegate": "=(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3364", "descr": "less than", "oprcom": ">(macaddr8,macaddr8)", "oprcode": "macaddr8_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": "<", "oprrest": "scalarltsel", "oprowner": "POSTGRES", "oprright": "macaddr8", "oprnegate": ">=(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3365", "descr": "less than or equal", "oprcom": ">=(macaddr8,macaddr8)", "oprcode": "macaddr8_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": "<=", "oprrest": "scalarlesel", "oprowner": "POSTGRES", "oprright": "macaddr8", "oprnegate": ">(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3366", "descr": "greater than", "oprcom": "<(macaddr8,macaddr8)", "oprcode": "macaddr8_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": ">", "oprrest": "scalargtsel", "oprowner": "POSTGRES", "oprright": "macaddr8", "oprnegate": "<=(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3367", "descr": "greater than or equal", "oprcom": "<=(macaddr8,macaddr8)", "oprcode": "macaddr8_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": ">=", "oprrest": "scalargesel", "oprowner": "POSTGRES", "oprright": "macaddr8", "oprnegate": "<(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3368", "descr": "bitwise not", "oprcom": "0", "oprcode": "macaddr8_not", "oprjoin": "-", "oprkind": "l", "oprleft": "0", "oprname": "~", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "macaddr8", "oprnegate": "0", "oprresult": "macaddr8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3369", "descr": "bitwise and", "oprcom": "0", "oprcode": "macaddr8_and", "oprjoin": "-", "oprkind": "b", "oprleft": "macaddr8", "oprname": "&", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "macaddr8", "oprnegate": "0", "oprresult": "macaddr8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3370", "descr": "bitwise or", "oprcom": "0", "oprcode": "macaddr8_or", "oprjoin": "-", "oprkind": "b", "oprleft": "macaddr8", "oprname": "|", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "macaddr8", "oprnegate": "0", "oprresult": "macaddr8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}], "signature": "macaddr8", "description": ["MAC（媒体访问控制）地址（EUI-64 格式）"], "manual_html": "<div class=\"sect1\" id=\"DATATYPE-NET-TYPES\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">\n<div>\n<div>\n<h2 class=\"title\" style=\"clear: both\">8.9. 网络地址类型 </h2>\n</div>\n</div>\n</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"productname\">PostgreSQL</span> 提供了用于存储 IPv4、IPv6 和 MAC 地址的数据类型，如<a class=\"xref\" href=\"/docs/18/datatype-net-types.html#DATATYPE-NET-TYPES-TABLE\" title=\"表 8.21. 网络地址类型\">表 8.21</a>所示。使用这些数据类型来存储网络地址，比使用纯文本类型更好，因为它们提供了输入错误检查以及专门的操作符和函数（见<a class=\"xref\" href=\"/docs/18/functions-net.html\" title=\"9.12. 网络地址函数和操作符\">第 9.12 节</a>）。</p>\n<div class=\"table\" id=\"DATATYPE-NET-TYPES-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 8.21. 网络地址类型</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th lang=\"zh\">名字</th>\n<th lang=\"zh\">存储大小</th>\n<th lang=\"zh\">说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"type\">cidr</code></td>\n<td lang=\"zh\">7 或 19 字节</td>\n<td lang=\"zh\">IPv4 和 IPv6 网络</td>\n</tr>\n<tr>\n<td><code class=\"type\">inet</code></td>\n<td lang=\"zh\">7 或 19 字节</td>\n<td lang=\"zh\">IPv4和IPv6主机以及网络</td>\n</tr>\n<tr>\n<td><code class=\"type\">macaddr</code></td>\n<td lang=\"zh\">6 字节</td>\n<td lang=\"zh\">MAC地址</td>\n</tr>\n<tr>\n<td><code class=\"type\">macaddr8</code></td>\n<td lang=\"zh\">8 字节</td>\n<td lang=\"zh\">MAC 地址（EUI-64 格式）</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\">对 inet 或 cidr 排序时，IPv4 地址始终排在 IPv6 地址之前；IPv4 地址封装或映射成的 IPv6 地址也包含在后者中，例如 ::10.2.3.4 或 ::ffff:10.4.3.2。</p>\n<div class=\"sect2\" id=\"DATATYPE-INET\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.9.1. <code class=\"type\">inet</code> </h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><code class=\"type\">inet</code> 在一个字段中保存 IPv4 或 IPv6 主机地址，以及可选的子网信息。子网由主机地址中包含的网络地址位数（即<span class=\"quote\">“<span class=\"quote\">网络掩码</span>”</span>）表示。如果网络掩码为 32 且地址是 IPv4，那么该值表示的不是子网，而只是单个主机。在 IPv6 中，地址长度为 128 位，因此 128 位表示一个唯一的主机地址。请注意，如果你只想接受网络地址，应使用 <code class=\"type\">cidr</code> 类型，而不是 <code class=\"type\">inet</code>。</p>\n<p lang=\"zh\">该类型的输入格式为 <em class=\"replaceable\"><code>address/y</code></em>，其中 <em class=\"replaceable\"><code>address</code></em> 是 IPv4 或 IPv6 地址，而 <em class=\"replaceable\"><code>y</code></em> 是网络掩码中的位数。如果省略 <em class=\"replaceable\"><code>/y</code></em> 部分，则 IPv4 的网络掩码取 32，IPv6 的网络掩码取 128，因此该值表示单个主机。显示时，如果 <em class=\"replaceable\"><code>/y</code></em> 部分表示的是单个主机，则它不会被显示出来。</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-CIDR\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.9.2. <code class=\"type\">cidr</code> </h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><code class=\"type\">cidr</code> 类型保存 IPv4 或 IPv6 网络说明。输入和输出格式遵循无类别域间路由（CIDR）约定。指定网络的格式为 <em class=\"replaceable\"><code>address/y</code></em>，其中 <em class=\"replaceable\"><code>address</code></em> 是网络最低地址的 IPv4 或 IPv6 表示，而 <em class=\"replaceable\"><code>y</code></em> 是网络掩码中的位数。如果省略 <em class=\"replaceable\"><code>y</code></em>，则会按照旧式的分类网络编号系统假设来计算，但至少会大到足以覆盖输入中写出的所有八位组。若指定的网络地址在所给网络掩码右侧仍有置位比特，则会报错。</p>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/datatype-net-types.html#DATATYPE-NET-CIDR-TABLE\" title=\"表 8.22. cidr类型输入示例\">表 8.22</a>展示了一些示例。</p>\n<div class=\"table\" id=\"DATATYPE-NET-CIDR-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 8.22. <code class=\"type\">cidr</code>类型输入示例</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n<thead>\n<tr>\n<th lang=\"zh\"><code class=\"type\">cidr</code>输入</th>\n<th lang=\"zh\"><code class=\"type\">cidr</code>输出</th>\n<th><code class=\"literal\"><code class=\"function\">abbrev(<code class=\"type\">cidr</code>)</code></code></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>192.168.100.128/25</td>\n<td>192.168.100.128/25</td>\n<td>192.168.100.128/25</td>\n</tr>\n<tr>\n<td>192.168/24</td>\n<td>192.168.0.0/24</td>\n<td>192.168.0/24</td>\n</tr>\n<tr>\n<td>192.168/25</td>\n<td>192.168.0.0/25</td>\n<td>192.168.0.0/25</td>\n</tr>\n<tr>\n<td>192.168.1</td>\n<td>192.168.1.0/24</td>\n<td>192.168.1/24</td>\n</tr>\n<tr>\n<td>192.168</td>\n<td>192.168.0.0/24</td>\n<td>192.168.0/24</td>\n</tr>\n<tr>\n<td>128.1</td>\n<td>128.1.0.0/16</td>\n<td>128.1/16</td>\n</tr>\n<tr>\n<td>128</td>\n<td>128.0.0.0/16</td>\n<td>128.0/16</td>\n</tr>\n<tr>\n<td>128.1.2</td>\n<td>128.1.2.0/24</td>\n<td>128.1.2/24</td>\n</tr>\n<tr>\n<td>10.1.2</td>\n<td>10.1.2.0/24</td>\n<td>10.1.2/24</td>\n</tr>\n<tr>\n<td>10.1</td>\n<td>10.1.0.0/16</td>\n<td>10.1/16</td>\n</tr>\n<tr>\n<td>10</td>\n<td>10.0.0.0/8</td>\n<td>10/8</td>\n</tr>\n<tr>\n<td>10.1.2.3/32</td>\n<td>10.1.2.3/32</td>\n<td>10.1.2.3/32</td>\n</tr>\n<tr>\n<td>2001:4f8:3:ba::/64</td>\n<td>2001:4f8:3:ba::/64</td>\n<td>2001:4f8:3:ba/64</td>\n</tr>\n<tr>\n<td>2001:4f8:3:ba:​2e0:81ff:fe22:d1f1/128</td>\n<td>2001:4f8:3:ba:​2e0:81ff:fe22:d1f1/128</td>\n<td>2001:4f8:3:ba:​2e0:81ff:fe22:d1f1/128</td>\n</tr>\n<tr>\n<td>::ffff:1.2.3.0/120</td>\n<td>::ffff:1.2.3.0/120</td>\n<td>::ffff:1.2.3/120</td>\n</tr>\n<tr>\n<td>::ffff:1.2.3.0/128</td>\n<td>::ffff:1.2.3.0/128</td>\n<td>::ffff:1.2.3.0/128</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-INET-VS-CIDR\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/datatype-net-types.html#DATATYPE-INET-VS-CIDR\">8.9.3. <code class=\"type\">inet</code> 与 <code class=\"type\">cidr</code></a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><code class=\"type\">inet</code> 和 <code class=\"type\">cidr</code> 两种数据类型的本质区别在于：<code class=\"type\">inet</code> 接受网络掩码右侧仍含有非零位的值，而 <code class=\"type\">cidr</code> 不接受。例如，<code class=\"literal\">192.168.0.1/24</code> 对 <code class=\"type\">inet</code> 是有效的，但对 <code class=\"type\">cidr</code> 无效。</p>\n<div class=\"tip\">\n<h3 class=\"title\" lang=\"zh\">提示</h3>\n<p lang=\"zh\">如果你不喜欢 <code class=\"type\">inet</code> 或 <code class=\"type\">cidr</code> 值的输出格式，可以试试 <code class=\"function\">host</code>、<code class=\"function\">text</code> 和 <code class=\"function\">abbrev</code> 函数。</p>\n</div>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-MACADDR\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.9.4. <code class=\"type\">macaddr</code> </h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><code class=\"type\">macaddr</code>类型存储 MAC 地址，例如以太网卡硬件地址（尽管 MAC 地址还用于其它用途）。可以接受下列格式的输入：</p>\n<table class=\"simplelist\">\n<tbody><tr>\n<td><code class=\"literal\">'08:00:2b:01:02:03'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'08-00-2b-01-02-03'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'08002b:010203'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'08002b-010203'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'0800.2b01.0203'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'0800-2b01-0203'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'08002b010203'</code></td>\n</tr>\n</tbody></table>\n<p lang=\"zh\">这些示例都指定同一个地址，数字 a 到 f 可使用大写或小写。输出始终采用所示的第一种格式。</p>\n<p lang=\"zh\">IEEE Standard 802-2001 将所示的第二种形式（使用连字符）规定为 MAC 地址的规范形式，将第一种形式（使用冒号）规定为按位反转、最高有效位优先的表示形式，因此 08-00-2b-01-02-03 = 10:00:D4:80:40:C0。如今，这一约定已普遍被忽略，只与过时的网络协议（如令牌环）有关。PostgreSQL 不作位反转处理；所有接受的格式都使用规范的最低有效位（LSB）顺序。</p>\n<p lang=\"zh\">剩下的五种输入格式不属于任何标准。</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-MACADDR8\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.9.5. <code class=\"type\">macaddr8</code> </h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\">macaddr8 存储 EUI-64 格式的 MAC 地址，例如以太网卡的硬件地址，但 MAC 地址也有其他用途。此类型接受长度为 6 或 8 字节的 MAC 地址，并统一以 8 字节格式存储。6 字节输入转换为 8 字节存储时，第 4 和第 5 字节分别设为 FF 和 FE。IPv6 使用修改后的 EUI-64 格式，从 EUI-48 转换后应将第 7 位设为一，可使用 macaddr8_set7bit 函数完成此操作。一般而言，输入由成对的十六进制数字组成，每对对应一个字节，可选择始终使用同一种分隔符 ':'、'-' 或 '.'。十六进制数字必须有 16 个（8 字节）或 12 个（6 字节）。开头和结尾的空白会被忽略。以下是可接受的输入格式示例：</p>\n<table class=\"simplelist\">\n<tbody><tr>\n<td><code class=\"literal\">'08:00:2b:01:02:03:04:05'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'08-00-2b-01-02-03-04-05'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'08002b:0102030405'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'08002b-0102030405'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'0800.2b01.0203.0405'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'0800-2b01-0203-0405'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'08002b01:02030405'</code></td>\n</tr>\n<tr>\n<td><code class=\"literal\">'08002b0102030405'</code></td>\n</tr>\n</tbody></table>\n<p lang=\"zh\">这些示例都指定同一个地址，数字 a 到 f 可使用大写或小写。输出始终采用所示的第一种格式。</p>\n<p lang=\"zh\">上述的后六种输入格式不属于任何标准。</p>\n<p lang=\"zh\">要将 EUI-48 格式的传统 48 位 MAC 地址转换为修改后的 EUI-64 格式，以便作为 IPv6 地址的主机部分，可使用 <code class=\"function\">macaddr8_set7bit</code>，如下所示：</p>\n<pre class=\"programlisting\">SELECT macaddr8_set7bit('08:00:2b:01:02:03');\n<code class=\"computeroutput\">\n    macaddr8_set7bit\n-------------------------\n 0a:00:2b:ff:fe:01:02:03\n(1 row)\n</code>\n</pre>\n</div>\n</div>", "manual_path": "datatype-net-types.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/datatype-money.html", "method": "same-major semantic node", "sha256": "6a3a18c17225f00376744bdae7a7f782102e9a0cce0bc2491e7669a43283455e", "language": "zh", "matched_nodes": ["#DATATYPE-MONEY/div[2]/div[1]/table[0]/tbody[2]/tr[0]/td[1]"]}, {"url": "/docs/18/datatype-net-types.html", "method": "same-major semantic node", "sha256": "e04d3ffce2f7b26fd0917911053833388e2d805b7b5b0acba1ea3a0905d83098", "language": "zh", "matched_nodes": ["#DATATYPE-NET-TYPES/div[0]", "#DATATYPE-NET-TYPES/div[10]/p[3]", "#DATATYPE-NET-TYPES/div[10]/p[7]", "#DATATYPE-NET-TYPES/div[11]/p[6]", "#DATATYPE-NET-TYPES/div[11]/p[7]", "#DATATYPE-NET-TYPES/div[1]/dl[0]/dt[2]", "#DATATYPE-NET-TYPES/div[4]/div[1]/table[0]/tbody[2]/tr[1]/td[2]", "#DATATYPE-NET-TYPES/div[4]/div[1]/table[0]/tbody[2]/tr[2]/td[2]", "#DATATYPE-NET-TYPES/div[4]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-NET-TYPES/div[4]/p[0]", "#DATATYPE-NET-TYPES/div[7]/p[2]", "#DATATYPE-NET-TYPES/div[7]/p[3]", "#DATATYPE-NET-TYPES/div[8]/div[4]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-NET-TYPES/div[8]/div[4]/div[1]/table[0]/thead[1]/tr[0]/th[1]", "#DATATYPE-NET-TYPES/div[8]/div[4]/p[0]", "#DATATYPE-NET-TYPES/div[8]/p[2]", "#DATATYPE-NET-TYPES/div[8]/p[3]", "#DATATYPE-NET-TYPES/div[9]/div[2]/h3[0]", "#DATATYPE-NET-TYPES/div[9]/div[2]/p[1]", "#DATATYPE-NET-TYPES/div[9]/p[1]", "#DATATYPE-NET-TYPES/p[3]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "MAC (Media Access Control) address (EUI-64 format)", "/versions/18/facts/0/label": "Catalog name", "/versions/18/facts/1/label": "Type OID", "/versions/18/facts/2/label": "Type kind", "/versions/18/facts/2/value": "Base type", "/versions/18/facts/3/label": "Declared length", "/versions/18/facts/3/value": "8 bytes", "/versions/18/facts/4/label": "Storage strategy", "/versions/18/facts/5/label": "Input function", "/versions/18/facts/6/label": "Output function", "/versions/18/facts/7/label": "Documented declaration", "/versions/18/facts/8/label": "Storage Size", "/versions/18/facts/8/value": "8 bytes", "/versions/18/facts/9/label": "Manual description", "/versions/18/facts/9/value": "MAC addresses (EUI-64 format)", "/versions/18/related/0/label": "pg_type catalog", "/versions/18/related/1/label": "pg_cast catalog", "/versions/18/related/2/label": "pg_operator catalog", "/versions/18/related/3/label": "pg_opclass catalog", "/versions/18/related/4/label": "Arrays", "/versions/18/related/5/label": "brin index access method", "/versions/18/related/6/label": "btree index access method", "/versions/18/related/7/label": "hash index access method"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "7d6c9163b75169ae7b92e40f5118c41dd21875fc0511775c40d88b2485526076"}, "comparison_data": {"casts": [{"castfunc": "macaddr", "castmethod": "f", "castsource": "macaddr8", "casttarget": "macaddr", "castcontext": "i"}, {"castfunc": "macaddr8", "castmethod": "f", "castsource": "macaddr", "casttarget": "macaddr8", "castcontext": "i"}], "facts": [{"label": "Catalog name", "value": "pg_catalog.macaddr8"}, {"label": "Declared length", "value": "8 bytes"}, {"label": "Documented declaration", "value": "macaddr8"}, {"label": "Input function", "value": "macaddr8_in"}, {"label": "Output function", "value": "macaddr8_out"}, {"label": "Storage Size", "value": "8 bytes"}, {"label": "Storage strategy", "value": "plain"}, {"label": "Type OID", "value": "774"}, {"label": "Type kind", "value": "Base type"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "8", "typelem": "0", "typname": "macaddr8", "typsend": "macaddr8_send", "typtype": "b", "typalign": "i", "typarray": "_macaddr8", "typbyval": "f", "typdelim": ",", "typinput": "macaddr8_in", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "macaddr8_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "macaddr8_recv", "typstorage": "p", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typsubscript": "-", "typdefaultbin": "_null_", "typispreferred": "f", "array_type_name": "_macaddr8"}, "operators": [{"oprcom": "0", "oprcode": "macaddr8_and", "oprjoin": "-", "oprkind": "b", "oprleft": "macaddr8", "oprname": "&", "oprrest": "-", "oprright": "macaddr8", "oprnegate": "0", "oprresult": "macaddr8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<=(macaddr8,macaddr8)", "oprcode": "macaddr8_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": ">=", "oprrest": "scalargesel", "oprright": "macaddr8", "oprnegate": "<(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<(macaddr8,macaddr8)", "oprcode": "macaddr8_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": ">", "oprrest": "scalargtsel", "oprright": "macaddr8", "oprnegate": "<=(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">=(macaddr8,macaddr8)", "oprcode": "macaddr8_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": "<=", "oprrest": "scalarlesel", "oprright": "macaddr8", "oprnegate": ">(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">(macaddr8,macaddr8)", "oprcode": "macaddr8_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": "<", "oprrest": "scalarltsel", "oprright": "macaddr8", "oprnegate": ">=(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<>(macaddr8,macaddr8)", "oprcode": "macaddr8_ne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": "<>", "oprrest": "neqsel", "oprright": "macaddr8", "oprnegate": "=(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "macaddr8_not", "oprjoin": "-", "oprkind": "l", "oprleft": "0", "oprname": "~", "oprrest": "-", "oprright": "macaddr8", "oprnegate": "0", "oprresult": "macaddr8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "macaddr8_or", "oprjoin": "-", "oprkind": "b", "oprleft": "macaddr8", "oprname": "|", "oprrest": "-", "oprright": "macaddr8", "oprnegate": "0", "oprresult": "macaddr8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "=(macaddr8,macaddr8)", "oprcode": "macaddr8_eq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "macaddr8", "oprname": "=", "oprrest": "eqsel", "oprright": "macaddr8", "oprnegate": "<>(macaddr8,macaddr8)", "oprresult": "bool", "oprcanhash": "t", "oprcanmerge": "t"}], "operator_classes": [{"opcname": "macaddr8_bloom_ops", "opcfamily": "brin/macaddr8_bloom_ops", "opcintype": "macaddr8", "opcmethod": "brin", "opcdefault": "f", "opckeytype": "macaddr8"}, {"opcname": "macaddr8_minmax_multi_ops", "opcfamily": "brin/macaddr8_minmax_multi_ops", "opcintype": "macaddr8", "opcmethod": "brin", "opcdefault": "f", "opckeytype": "macaddr8"}, {"opcname": "macaddr8_minmax_ops", "opcfamily": "brin/macaddr8_minmax_ops", "opcintype": "macaddr8", "opcmethod": "brin", "opcdefault": "t", "opckeytype": "macaddr8"}, {"opcname": "macaddr8_ops", "opcfamily": "btree/macaddr8_ops", "opcintype": "macaddr8", "opcmethod": "btree", "opcdefault": "t", "opckeytype": "0"}, {"opcname": "macaddr8_ops", "opcfamily": "hash/macaddr8_ops", "opcintype": "macaddr8", "opcmethod": "hash", "opcdefault": "t", "opckeytype": "0"}]}, "comparison_hash": "1334df6253de3eaa00588d78936d00fea61d0ce6f24b2e8072d0d288a7ae2c11", "manual_language": "zh", "operator_classes": [{"opcname": "macaddr8_ops", "opcowner": "POSTGRES", "opcfamily": "btree/macaddr8_ops", "opcintype": "macaddr8", "opcmethod": "btree", "opcdefault": "t", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "macaddr8_ops", "opcowner": "POSTGRES", "opcfamily": "hash/macaddr8_ops", "opcintype": "macaddr8", "opcmethod": "hash", "opcdefault": "t", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "macaddr8_minmax_ops", "opcowner": "POSTGRES", "opcfamily": "brin/macaddr8_minmax_ops", "opcintype": "macaddr8", "opcmethod": "brin", "opcdefault": "t", "opckeytype": "macaddr8", "opcnamespace": "pg_catalog"}, {"opcname": "macaddr8_minmax_multi_ops", "opcowner": "POSTGRES", "opcfamily": "brin/macaddr8_minmax_multi_ops", "opcintype": "macaddr8", "opcmethod": "brin", "opcdefault": "f", "opckeytype": "macaddr8", "opcnamespace": "pg_catalog"}, {"opcname": "macaddr8_bloom_ops", "opcowner": "POSTGRES", "opcfamily": "brin/macaddr8_bloom_ops", "opcintype": "macaddr8", "opcmethod": "brin", "opcdefault": "f", "opckeytype": "macaddr8", "opcnamespace": "pg_catalog"}], "manual_documentation": "dedicated family chapter"}, "from": "17", "comparison": {"available": true, "changes": [], "prose_changed": true}}