{"kind": "type", "slug": "text", "name": "text", "major": "18", "snapshot": {"casts": [{"castfunc": "regclass", "castmethod": "f", "castsource": "text", "casttarget": "regclass", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "text", "casttarget": "bpchar", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "text", "casttarget": "varchar", "castcontext": "i"}, {"castfunc": "text(bpchar)", "castmethod": "f", "castsource": "bpchar", "casttarget": "text", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "varchar", "casttarget": "text", "castcontext": "i"}, {"castfunc": "text(char)", "castmethod": "f", "castsource": "char", "casttarget": "text", "castcontext": "i"}, {"castfunc": "text(name)", "castmethod": "f", "castsource": "name", "casttarget": "text", "castcontext": "i"}, {"castfunc": "char(text)", "castmethod": "f", "castsource": "text", "casttarget": "char", "castcontext": "a"}, {"castfunc": "name(text)", "castmethod": "f", "castsource": "text", "casttarget": "name", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "pg_node_tree", "casttarget": "text", "castcontext": "i"}, {"castfunc": "0", "castmethod": "i", "castsource": "pg_ndistinct", "casttarget": "text", "castcontext": "i"}, {"castfunc": "0", "castmethod": "i", "castsource": "pg_dependencies", "casttarget": "text", "castcontext": "i"}, {"castfunc": "0", "castmethod": "i", "castsource": "pg_mcv_list", "casttarget": "text", "castcontext": "i"}, {"castfunc": "text(inet)", "castmethod": "f", "castsource": "cidr", "casttarget": "text", "castcontext": "a"}, {"castfunc": "text(inet)", "castmethod": "f", "castsource": "inet", "casttarget": "text", "castcontext": "a"}, {"castfunc": "text(bool)", "castmethod": "f", "castsource": "bool", "casttarget": "text", "castcontext": "a"}, {"castfunc": "0", "castmethod": "b", "castsource": "xml", "casttarget": "text", "castcontext": "a"}, {"castfunc": "xml", "castmethod": "f", "castsource": "text", "casttarget": "xml", "castcontext": "e"}], "facts": [{"label": "目录名称", "value": "pg_catalog.text"}, {"label": "类型 OID", "value": "25"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "变长（varlena）"}, {"label": "存储策略", "value": "扩展"}, {"label": "输入函数", "value": "textin"}, {"label": "输出函数", "value": "textout"}, {"label": "手册中的声明", "value": "文本"}, {"label": "手册说明", "value": "无限长度的变长"}], "ranges": [], "aliases": [], "catalog": {"oid": "25", "descr": "variable-length string, no limit specified", "typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "text", "typsend": "textsend", "typtype": "b", "typalign": "i", "typarray": "0", "typbyval": "f", "typdelim": "','", "typinput": "textin", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "textout", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "textrecv", "typstorage": "x", "typbasetype": "0", "typcategory": "S", "typcollation": "default", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "-", "typdefaultbin": "_null_", "array_type_oid": "1009", "typispreferred": "t", "array_type_name": "_text"}, "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 索引访问方法"}, {"url": "/wiki/indexam/spgist/?v=18", "label": "spgist 索引访问方法"}], "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-character.html", "path": "datatype-character.html", "label": "PostgreSQL 18 English manual", "sha256": "c73eebe413ea709a7792e4cfc3cfe9fb68cb496ebe83c3ebaa9d09f8c40d0f73", "language": "en", "original_url": "/docs/18/datatype-character.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": "98", "descr": "equal", "oprcom": "=(text,text)", "oprcode": "texteq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "=", "oprrest": "eqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "<>(text,text)", "oprresult": "bool", "oid_symbol": "TextEqualOperator", "oprcanhash": "t", "oprcanmerge": "t", "oprnamespace": "pg_catalog"}, {"oid": "3877", "descr": "starts with", "oprcom": "0", "oprcode": "starts_with", "oprjoin": "prefixjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "^@", "oprrest": "prefixsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "bool", "oid_symbol": "TextPrefixOperator", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "254", "descr": "equal", "oprcom": "=(text,name)", "oprcode": "nameeqtext", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "=", "oprrest": "eqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "<>(name,text)", "oprresult": "bool", "oid_symbol": "NameEqualTextOperator", "oprcanhash": "t", "oprcanmerge": "t", "oprnamespace": "pg_catalog"}, {"oid": "255", "descr": "less than", "oprcom": ">(text,name)", "oprcode": "namelttext", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "<", "oprrest": "scalarltsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": ">=(name,text)", "oprresult": "bool", "oid_symbol": "NameLessTextOperator", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "256", "descr": "less than or equal", "oprcom": ">=(text,name)", "oprcode": "nameletext", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "<=", "oprrest": "scalarlesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": ">(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "257", "descr": "greater than or equal", "oprcom": "<=(text,name)", "oprcode": "namegetext", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "name", "oprname": ">=", "oprrest": "scalargesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "<(name,text)", "oprresult": "bool", "oid_symbol": "NameGreaterEqualTextOperator", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "258", "descr": "greater than", "oprcom": "<(text,name)", "oprcode": "namegttext", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "name", "oprname": ">", "oprrest": "scalargtsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "<=(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "259", "descr": "not equal", "oprcom": "<>(text,name)", "oprcode": "namenetext", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "<>", "oprrest": "neqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "=(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "260", "descr": "equal", "oprcom": "=(name,text)", "oprcode": "texteqname", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "=", "oprrest": "eqsel", "oprowner": "POSTGRES", "oprright": "name", "oprnegate": "<>(text,name)", "oprresult": "bool", "oprcanhash": "t", "oprcanmerge": "t", "oprnamespace": "pg_catalog"}, {"oid": "261", "descr": "less than", "oprcom": ">(name,text)", "oprcode": "textltname", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<", "oprrest": "scalarltsel", "oprowner": "POSTGRES", "oprright": "name", "oprnegate": ">=(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "262", "descr": "less than or equal", "oprcom": ">=(name,text)", "oprcode": "textlename", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<=", "oprrest": "scalarlesel", "oprowner": "POSTGRES", "oprright": "name", "oprnegate": ">(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "263", "descr": "greater than or equal", "oprcom": "<=(name,text)", "oprcode": "textgename", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "text", "oprname": ">=", "oprrest": "scalargesel", "oprowner": "POSTGRES", "oprright": "name", "oprnegate": "<(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "264", "descr": "greater than", "oprcom": "<(name,text)", "oprcode": "textgtname", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "text", "oprname": ">", "oprrest": "scalargtsel", "oprowner": "POSTGRES", "oprright": "name", "oprnegate": "<=(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "265", "descr": "not equal", "oprcom": "<>(name,text)", "oprcode": "textnename", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<>", "oprrest": "neqsel", "oprowner": "POSTGRES", "oprright": "name", "oprnegate": "=(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "531", "descr": "not equal", "oprcom": "<>(text,text)", "oprcode": "textne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<>", "oprrest": "neqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "=(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "639", "descr": "matches regular expression, case-sensitive", "oprcom": "0", "oprcode": "nameregexeq", "oprjoin": "regexeqjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "~", "oprrest": "regexeqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~(name,text)", "oprresult": "bool", "oid_symbol": "OID_NAME_REGEXEQ_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "640", "descr": "does not match regular expression, case-sensitive", "oprcom": "0", "oprcode": "nameregexne", "oprjoin": "regexnejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "!~", "oprrest": "regexnesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "641", "descr": "matches regular expression, case-sensitive", "oprcom": "0", "oprcode": "textregexeq", "oprjoin": "regexeqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~", "oprrest": "regexeqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~(text,text)", "oprresult": "bool", "oid_symbol": "OID_TEXT_REGEXEQ_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "642", "descr": "does not match regular expression, case-sensitive", "oprcom": "0", "oprcode": "textregexne", "oprjoin": "regexnejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "!~", "oprrest": "regexnesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "654", "descr": "concatenate", "oprcom": "0", "oprcode": "textcat", "oprjoin": "-", "oprkind": "b", "oprleft": "text", "oprname": "||", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "664", "descr": "less than", "oprcom": ">(text,text)", "oprcode": "text_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<", "oprrest": "scalarltsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": ">=(text,text)", "oprresult": "bool", "oid_symbol": "TextLessOperator", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "665", "descr": "less than or equal", "oprcom": ">=(text,text)", "oprcode": "text_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<=", "oprrest": "scalarlesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": ">(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "666", "descr": "greater than", "oprcom": "<(text,text)", "oprcode": "text_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "text", "oprname": ">", "oprrest": "scalargtsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "<=(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "667", "descr": "greater than or equal", "oprcom": "<=(text,text)", "oprcode": "text_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "text", "oprname": ">=", "oprrest": "scalargesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "<(text,text)", "oprresult": "bool", "oid_symbol": "TextGreaterEqualOperator", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1055", "descr": "matches regular expression, case-sensitive", "oprcom": "0", "oprcode": "bpcharregexeq", "oprjoin": "regexeqjoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "~", "oprrest": "regexeqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~(bpchar,text)", "oprresult": "bool", "oid_symbol": "OID_BPCHAR_REGEXEQ_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1056", "descr": "does not match regular expression, case-sensitive", "oprcom": "0", "oprcode": "bpcharregexne", "oprjoin": "regexnejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "!~", "oprrest": "regexnesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1207", "descr": "matches LIKE expression", "oprcom": "0", "oprcode": "namelike", "oprjoin": "likejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "~~", "oprrest": "likesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~~(name,text)", "oprresult": "bool", "oid_symbol": "OID_NAME_LIKE_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1208", "descr": "does not match LIKE expression", "oprcom": "0", "oprcode": "namenlike", "oprjoin": "nlikejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "!~~", "oprrest": "nlikesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~~(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1209", "descr": "matches LIKE expression", "oprcom": "0", "oprcode": "textlike", "oprjoin": "likejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~~", "oprrest": "likesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~~(text,text)", "oprresult": "bool", "oid_symbol": "OID_TEXT_LIKE_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1210", "descr": "does not match LIKE expression", "oprcom": "0", "oprcode": "textnlike", "oprjoin": "nlikejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "!~~", "oprrest": "nlikesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1211", "descr": "matches LIKE expression", "oprcom": "0", "oprcode": "bpcharlike", "oprjoin": "likejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "~~", "oprrest": "likesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~~(bpchar,text)", "oprresult": "bool", "oid_symbol": "OID_BPCHAR_LIKE_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1212", "descr": "does not match LIKE expression", "oprcom": "0", "oprcode": "bpcharnlike", "oprjoin": "nlikejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "!~~", "oprrest": "nlikesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~~(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1226", "descr": "matches regular expression, case-insensitive", "oprcom": "0", "oprcode": "nameicregexeq", "oprjoin": "icregexeqjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "~*", "oprrest": "icregexeqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~*(name,text)", "oprresult": "bool", "oid_symbol": "OID_NAME_ICREGEXEQ_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1227", "descr": "does not match regular expression, case-insensitive", "oprcom": "0", "oprcode": "nameicregexne", "oprjoin": "icregexnejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "!~*", "oprrest": "icregexnesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~*(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1228", "descr": "matches regular expression, case-insensitive", "oprcom": "0", "oprcode": "texticregexeq", "oprjoin": "icregexeqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~*", "oprrest": "icregexeqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~*(text,text)", "oprresult": "bool", "oid_symbol": "OID_TEXT_ICREGEXEQ_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1229", "descr": "does not match regular expression, case-insensitive", "oprcom": "0", "oprcode": "texticregexne", "oprjoin": "icregexnejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "!~*", "oprrest": "icregexnesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~*(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1234", "descr": "matches regular expression, case-insensitive", "oprcom": "0", "oprcode": "bpcharicregexeq", "oprjoin": "icregexeqjoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "~*", "oprrest": "icregexeqsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~*(bpchar,text)", "oprresult": "bool", "oid_symbol": "OID_BPCHAR_ICREGEXEQ_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1235", "descr": "does not match regular expression, case-insensitive", "oprcom": "0", "oprcode": "bpcharicregexne", "oprjoin": "icregexnejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "!~*", "oprrest": "icregexnesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~*(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1625", "descr": "matches LIKE expression, case-insensitive", "oprcom": "0", "oprcode": "nameiclike", "oprjoin": "iclikejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "~~*", "oprrest": "iclikesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~~*(name,text)", "oprresult": "bool", "oid_symbol": "OID_NAME_ICLIKE_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1626", "descr": "does not match LIKE expression, case-insensitive", "oprcom": "0", "oprcode": "nameicnlike", "oprjoin": "icnlikejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "!~~*", "oprrest": "icnlikesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~~*(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1627", "descr": "matches LIKE expression, case-insensitive", "oprcom": "0", "oprcode": "texticlike", "oprjoin": "iclikejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~~*", "oprrest": "iclikesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~~*(text,text)", "oprresult": "bool", "oid_symbol": "OID_TEXT_ICLIKE_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1628", "descr": "does not match LIKE expression, case-insensitive", "oprcom": "0", "oprcode": "texticnlike", "oprjoin": "icnlikejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "!~~*", "oprrest": "icnlikesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~~*(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1629", "descr": "matches LIKE expression, case-insensitive", "oprcom": "0", "oprcode": "bpchariclike", "oprjoin": "iclikejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "~~*", "oprrest": "iclikesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "!~~*(bpchar,text)", "oprresult": "bool", "oid_symbol": "OID_BPCHAR_ICLIKE_OP", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1630", "descr": "does not match LIKE expression, case-insensitive", "oprcom": "0", "oprcode": "bpcharicnlike", "oprjoin": "icnlikejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "!~~*", "oprrest": "icnlikesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~~*(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "2314", "descr": "less than", "oprcom": "~>~(text,text)", "oprcode": "text_pattern_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~<~", "oprrest": "scalarltsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~>=~(text,text)", "oprresult": "bool", "oid_symbol": "TextPatternLessOperator", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "2315", "descr": "less than or equal", "oprcom": "~>=~(text,text)", "oprcode": "text_pattern_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~<=~", "oprrest": "scalarlesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~>~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "2317", "descr": "greater than or equal", "oprcom": "~<=~(text,text)", "oprcode": "text_pattern_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~>=~", "oprrest": "scalargesel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~<~(text,text)", "oprresult": "bool", "oid_symbol": "TextPatternGreaterEqualOperator", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "2318", "descr": "greater than", "oprcom": "~<~(text,text)", "oprcode": "text_pattern_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~>~", "oprrest": "scalargtsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "~<=~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "2779", "descr": "concatenate", "oprcom": "0", "oprcode": "textanycat", "oprjoin": "-", "oprkind": "b", "oprleft": "text", "oprname": "||", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "anynonarray", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "2780", "descr": "concatenate", "oprcom": "0", "oprcode": "anytextcat", "oprjoin": "-", "oprkind": "b", "oprleft": "anynonarray", "oprname": "||", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3762", "descr": "text search match", "oprcom": "0", "oprcode": "ts_match_tt", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "@@", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3763", "descr": "text search match", "oprcom": "0", "oprcode": "ts_match_tq", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "@@", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3962", "descr": "get json object field", "oprcom": "0", "oprcode": "json_object_field", "oprjoin": "-", "oprkind": "b", "oprleft": "json", "oprname": "->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "json", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3963", "descr": "get json object field as text", "oprcom": "0", "oprcode": "json_object_field_text", "oprjoin": "-", "oprkind": "b", "oprleft": "json", "oprname": "->>", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3211", "descr": "get jsonb object field", "oprcom": "0", "oprcode": "jsonb_object_field", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3477", "descr": "get jsonb object field as text", "oprcom": "0", "oprcode": "jsonb_object_field_text", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->>", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3247", "descr": "key exists", "oprcom": "0", "oprcode": "jsonb_exists", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "?", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3285", "descr": "delete object field", "oprcom": "0", "oprcode": "jsonb_delete(jsonb,text)", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}], "signature": "text", "description": ["变长字符串"], "manual_html": "<div class=\"sect1\" id=\"DATATYPE-CHARACTER\">\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.3. 字符类型 </h2>\n</div>\n</div>\n</h2>\n</div>\n</div>\n</div>\n<div class=\"table\" id=\"DATATYPE-CHARACTER-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 8.4. 字符类型</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</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"type\">character varying(<em class=\"replaceable\"><code>n</code></em>)</code>, <code class=\"type\">varchar(<em class=\"replaceable\"><code>n</code></em>)</code></td>\n<td lang=\"zh\">有长度限制的变长</td>\n</tr>\n<tr>\n<td><code class=\"type\">character(<em class=\"replaceable\"><code>n</code></em>)</code>, <code class=\"type\">char(<em class=\"replaceable\"><code>n</code></em>)</code>, <code class=\"type\">bpchar(<em class=\"replaceable\"><code>n</code></em>)</code></td>\n<td lang=\"zh\">定长，空格填充</td>\n</tr>\n<tr>\n<td><code class=\"type\">bpchar</code></td>\n<td lang=\"zh\">无限长度的变长，忽略尾随空格</td>\n</tr>\n<tr>\n<td lang=\"zh\">文本</td>\n<td lang=\"zh\">无限长度的变长</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n<p lang=\"zh\"><a class=\"xref\" href=\"/docs/18/datatype-character.html#DATATYPE-CHARACTER-TABLE\" title=\"表 8.4. 字符类型\">表 8.4</a>显示了在<span class=\"productname\">PostgreSQL</span>里可用的一般用途的字符类型。</p>\n<p lang=\"zh\"><acronym class=\"acronym\">SQL</acronym> 定义了两种主要字符类型：<code class=\"type\">character varying(<em class=\"replaceable\"><code>n</code></em>)</code> 和 <code class=\"type\">character(<em class=\"replaceable\"><code>n</code></em>)</code>，其中 <em class=\"replaceable\"><code>n</code></em> 是正整数。这两种类型都可以存储长度最多为 <em class=\"replaceable\"><code>n</code></em> 个字符（而不是字节）的字符串。试图把更长的字符串存入这些类型的列时会报错，除非超出的字符全部都是空格，在这种情况下字符串会被截断到最大长度。（这一多少有些奇怪的例外是 <acronym class=\"acronym\">SQL</acronym> 标准要求的。）不过，如果显式把一个值转换为 <code class=\"type\">character varying(<em class=\"replaceable\"><code>n</code></em>)</code> 或 <code class=\"type\">character(<em class=\"replaceable\"><code>n</code></em>)</code>，那么超长的值会被截断为 <em class=\"replaceable\"><code>n</code></em> 个字符而不会报错。（这同样是 <acronym class=\"acronym\">SQL</acronym> 标准要求的。）如果要存储的字符串短于声明长度，<code class=\"type\">character</code> 类型的值会用空格填充；<code class=\"type\">character varying</code> 类型则只是简单地存储较短的字符串。</p>\n<p lang=\"zh\">此外，<span class=\"productname\">PostgreSQL</span> 还提供 <code class=\"type\">text</code> 类型，用于存储任意长度的字符串。虽然 <code class=\"type\">text</code> 类型不在 <acronym class=\"acronym\">SQL</acronym> 标准中，但其他若干 SQL 数据库管理系统也提供了它。<code class=\"type\">text</code> 是 <span class=\"productname\">PostgreSQL</span> 的原生字符串数据类型，因为大多数对字符串进行操作的内置函数都声明为接受或返回 <code class=\"type\">text</code>，而不是 <code class=\"type\">character varying</code>。在很多场景下，<code class=\"type\">character varying</code> 的行为就像是建立在 <code class=\"type\">text</code> 之上的一个<a class=\"link\" href=\"/docs/18/domains.html\" title=\"8.18. 域类型\">域</a>。</p>\n<p lang=\"zh\">类型名 <code class=\"type\">varchar</code> 是 <code class=\"type\">character varying</code> 的别名，而 <code class=\"type\">bpchar</code>（带长度说明时）和 <code class=\"type\">char</code> 是 <code class=\"type\">character</code> 的别名。<code class=\"type\">varchar</code> 和 <code class=\"type\">char</code> 这两个别名由 <acronym class=\"acronym\">SQL</acronym> 标准定义；<code class=\"type\">bpchar</code> 则是 <span class=\"productname\">PostgreSQL</span> 的扩展。</p>\n<p lang=\"zh\">若指定长度 n，则它必须大于零且不能超过 10,485,760。若 character varying（或 varchar）没有长度限定，则接受任意长度的字符串。若 bpchar 没有长度限定，也接受任意长度的字符串，但尾部空格在语义上不重要。若 character（或 char）没有长度限定，则等价于 character(1)。</p>\n<p lang=\"zh\"><code class=\"type\">character</code> 类型的值在物理存储时会在右侧用空格填充到指定宽度 <em class=\"replaceable\"><code>n</code></em>，并且也会按这种形式存储和显示。但是，在比较两个 <code class=\"type\">character</code> 值时，尾随空格在语义上被视为不重要并会被忽略。在空白字符有区分意义的排序规则中，这种行为可能产生意外结果；例如，<code class=\"command\">SELECT 'a '::CHAR(2) collate \"C\" &lt; E'a\\n'::CHAR(2)</code> 会返回真，即使 <code class=\"literal\">C</code> 区域设置认为空格大于换行符。把 <code class=\"type\">character</code> 值转换为其他字符串类型之一时，尾随空格会被移除。请注意，在 <code class=\"type\">character varying</code> 和 <code class=\"type\">text</code> 值中，以及进行模式匹配（即 <code class=\"literal\">LIKE</code> 和正则表达式）时，尾随空格<span class=\"emphasis\"><em>在语义上是有意义的</em></span>。</p>\n<p lang=\"zh\">可以存储在这些数据类型中的字符由数据库字符集确定，该数据库字符集在创建数据库时选择。无论特定的字符集是什么，都无法存储编码值为零的字符（有时称为NUL）。有关更多信息，请参阅<a class=\"xref\" href=\"/docs/18/multibyte.html\" title=\"23.3. 字符集支持\">第 23.3 节</a>。</p>\n<p lang=\"zh\">短字符串（最多 126 字节）的存储空间为实际字符串大小加 1 字节；对于 character，实际字符串包含补齐的空格。更长的字符串开销为 4 字节，而非 1 字节。系统会自动压缩长字符串，因此实际磁盘占用可能更小。很长的值还会存储在后台表中，避免影响较短列值的快速访问。无论如何，可存储字符串的最大长度约为 1 GB。（类型声明中 n 的最大允许值更小。改变这一点没有意义，因为多字节编码中字符数与字节数可能相差很大。如果希望存储没有明确上限的长字符串，应使用 text 或不带长度的 character varying，而非随意指定一个长度上限。）</p>\n<div class=\"tip\">\n<h3 class=\"title\" lang=\"zh\">提示</h3>\n<p lang=\"zh\">这三种类型之间没有性能差别，除了使用空格填充类型时会占用更多存储空间，以及在写入带长度约束的列时需要少量额外 CPU 周期来检查长度。虽然在某些其他数据库系统中，<code class=\"type\">character(<em class=\"replaceable\"><code>n</code></em>)</code> 可能有一定性能优势，但在 <span class=\"productname\">PostgreSQL</span> 中并不存在这种优势。事实上，由于额外的存储开销，<code class=\"type\">character(<em class=\"replaceable\"><code>n</code></em>)</code> 通常反而是三者中最慢的。大多数情况下，应优先使用 <code class=\"type\">text</code> 或 <code class=\"type\">character varying</code>。</p>\n</div>\n<p lang=\"zh\">关于字符串常量的语法，请参见<a class=\"xref\" href=\"/docs/18/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS\" title=\"4.1.2.1. 字符串常量\">第 4.1.2.1 节</a>；关于可用的操作符和函数，请参见<a class=\"xref\" href=\"/docs/18/functions.html\" title=\"第 9 章 函数和操作符\">第 9 章</a>。</p>\n<div class=\"example\" id=\"id-1.5.7.11.21\">\n<p class=\"title\" lang=\"zh\"><strong>例 8.1. 使用字符类型</strong></p>\n<div class=\"example-contents\">\n<pre class=\"programlisting\">CREATE TABLE test1 (a character(4));\nINSERT INTO test1 VALUES ('ok');\nSELECT a, char_length(a) FROM test1; -- <span id=\"co.datatype-char\"></span>(1)\n<code class=\"computeroutput\">\n  a   | char_length\n------+-------------\n ok   |           2\n</code>\n\nCREATE TABLE test2 (b varchar(5));\nINSERT INTO test2 VALUES ('ok');\nINSERT INTO test2 VALUES ('good      ');\nINSERT INTO test2 VALUES ('too long');\n<code class=\"computeroutput\">ERROR:  value too long for type character varying(5)</code>\nINSERT INTO test2 VALUES ('too long'::varchar(5)); -- explicit truncation\nSELECT b, char_length(b) FROM test2;\n<code class=\"computeroutput\">\n   b   | char_length\n-------+-------------\n ok    |           2\n good  |           5\n too l |           5\n</code>\n</pre>\n<div class=\"calloutlist\">\n<table>\n<tbody><tr>\n<td>\n<p><a href=\"https://pg.center/docs/18/datatype-character.html#co.datatype-char\">(1)</a></p>\n</td>\n<td lang=\"zh\">\n<p>函数<code class=\"function\">char_length</code>在<a class=\"xref\" href=\"/docs/18/functions-string.html\" title=\"9.4. 字符串函数和操作符\">第 9.4 节</a>中讨论。</p>\n</td>\n</tr>\n</tbody></table>\n</div>\n</div>\n</div><br class=\"example-break\"/>\n<p lang=\"zh\">PostgreSQL 还有另外两种定长字符类型，见表 8.5。它们只用于内部系统目录，不适合通用用途。name 用来存储标识符，当前长度定义为 64 字节，即 63 个可用字符加终止符，但 C 源码中应使用 NAMEDATALEN 常量引用。长度在编译时设定，因此可为特殊用途调整；默认最大长度可能在未来版本中变化。\"char\" 类型（注意双引号）与 char(1) 不同，只占一个字节，因此只能存储一个 ASCII 字符；它在系统目录中用作简单的枚举类型。</p>\n<div class=\"table\" id=\"DATATYPE-CHARACTER-SPECIAL-TABLE\">\n<p class=\"title\" lang=\"zh\"><strong>表 8.5. 特殊字符类型</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\">\"char\"</code></td>\n<td lang=\"zh\">1 字节</td>\n<td lang=\"zh\">单字节内部类型</td>\n</tr>\n<tr>\n<td><code class=\"type\">name</code></td>\n<td lang=\"zh\">64 字节</td>\n<td lang=\"zh\">用于对象名的内部类型</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\"/>\n</div>", "manual_path": "datatype-character.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/datatype-character.html", "method": "same-major semantic node", "sha256": "1b410c231f113ce255ee6b8ce70f72d0caa18402458df477bf254d2989b0874e", "language": "zh", "matched_nodes": ["#DATATYPE-CHARACTER/div[0]", "#DATATYPE-CHARACTER/div[19]/h3[0]", "#DATATYPE-CHARACTER/div[19]/p[1]", "#DATATYPE-CHARACTER/div[21]/div[1]/div[1]/table[0]/tr[0]/td[1]", "#DATATYPE-CHARACTER/div[21]/p[0]", "#DATATYPE-CHARACTER/div[24]/div[1]/table[0]/tbody[2]/tr[0]/td[2]", "#DATATYPE-CHARACTER/div[24]/div[1]/table[0]/tbody[2]/tr[1]/td[2]", "#DATATYPE-CHARACTER/div[24]/p[0]", "#DATATYPE-CHARACTER/div[9]/div[1]/table[0]/tbody[2]/tr[0]/td[1]", "#DATATYPE-CHARACTER/div[9]/div[1]/table[0]/tbody[2]/tr[1]/td[1]", "#DATATYPE-CHARACTER/div[9]/div[1]/table[0]/tbody[2]/tr[2]/td[1]", "#DATATYPE-CHARACTER/div[9]/div[1]/table[0]/tbody[2]/tr[3]/td[1]", "#DATATYPE-CHARACTER/div[9]/div[1]/table[0]/thead[1]/tr[0]/th[0]", "#DATATYPE-CHARACTER/div[9]/p[0]", "#DATATYPE-CHARACTER/p[11]", "#DATATYPE-CHARACTER/p[12]", "#DATATYPE-CHARACTER/p[13]", "#DATATYPE-CHARACTER/p[14]", "#DATATYPE-CHARACTER/p[16]", "#DATATYPE-CHARACTER/p[17]", "#DATATYPE-CHARACTER/p[20]"]}, {"url": "/docs/18/functions-matching.html", "method": "same-major semantic node", "sha256": "704120d783880b39b956c073d1a82ba1f40b35068b4d3b9a195f543b86c3a22a", "language": "zh", "matched_nodes": ["#FUNCTIONS-MATCHING/div[9]/div[51]/p[2]/em[2]"]}, {"url": "/docs/18/protocol-overview.html", "method": "same-major semantic node", "sha256": "3f1aa8bd4dbef58e9a82e8cf4c82829a4df7416cfa83dd61c18e9e25060f22da", "language": "zh", "matched_nodes": ["#PROTOCOL-OVERVIEW/div[9]/p[1]/span[2]/span[0]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "variable-length character string", "/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": "Variable length (varlena)", "/versions/18/facts/4/label": "Storage strategy", "/versions/18/facts/4/value": "extended", "/versions/18/facts/5/label": "Input function", "/versions/18/facts/6/label": "Output function", "/versions/18/facts/7/label": "Documented declaration", "/versions/18/facts/7/value": "text", "/versions/18/facts/8/label": "Manual description", "/versions/18/facts/8/value": "variable unlimited length", "/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", "/versions/18/related/8/label": "spgist index access method"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "d54fae473fbcd572092754453d4358272148da410a86c09d972971ad525e0eb9"}, "comparison_data": {"casts": [{"castfunc": "0", "castmethod": "b", "castsource": "xml", "casttarget": "text", "castcontext": "a"}, {"castfunc": "char(text)", "castmethod": "f", "castsource": "text", "casttarget": "char", "castcontext": "a"}, {"castfunc": "text(bool)", "castmethod": "f", "castsource": "bool", "casttarget": "text", "castcontext": "a"}, {"castfunc": "text(inet)", "castmethod": "f", "castsource": "cidr", "casttarget": "text", "castcontext": "a"}, {"castfunc": "text(inet)", "castmethod": "f", "castsource": "inet", "casttarget": "text", "castcontext": "a"}, {"castfunc": "xml", "castmethod": "f", "castsource": "text", "casttarget": "xml", "castcontext": "e"}, {"castfunc": "0", "castmethod": "b", "castsource": "pg_node_tree", "casttarget": "text", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "text", "casttarget": "bpchar", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "text", "casttarget": "varchar", "castcontext": "i"}, {"castfunc": "0", "castmethod": "b", "castsource": "varchar", "casttarget": "text", "castcontext": "i"}, {"castfunc": "0", "castmethod": "i", "castsource": "pg_dependencies", "casttarget": "text", "castcontext": "i"}, {"castfunc": "0", "castmethod": "i", "castsource": "pg_mcv_list", "casttarget": "text", "castcontext": "i"}, {"castfunc": "0", "castmethod": "i", "castsource": "pg_ndistinct", "casttarget": "text", "castcontext": "i"}, {"castfunc": "name(text)", "castmethod": "f", "castsource": "text", "casttarget": "name", "castcontext": "i"}, {"castfunc": "regclass", "castmethod": "f", "castsource": "text", "casttarget": "regclass", "castcontext": "i"}, {"castfunc": "text(bpchar)", "castmethod": "f", "castsource": "bpchar", "casttarget": "text", "castcontext": "i"}, {"castfunc": "text(char)", "castmethod": "f", "castsource": "char", "casttarget": "text", "castcontext": "i"}, {"castfunc": "text(name)", "castmethod": "f", "castsource": "name", "casttarget": "text", "castcontext": "i"}], "facts": [{"label": "Catalog name", "value": "pg_catalog.text"}, {"label": "Declared length", "value": "Variable length (varlena)"}, {"label": "Documented declaration", "value": "text"}, {"label": "Input function", "value": "textin"}, {"label": "Output function", "value": "textout"}, {"label": "Storage strategy", "value": "extended"}, {"label": "Type OID", "value": "25"}, {"label": "Type kind", "value": "Base type"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "text", "typsend": "textsend", "typtype": "b", "typalign": "i", "typarray": "_text", "typbyval": "f", "typdelim": ",", "typinput": "textin", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "textout", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "textrecv", "typstorage": "x", "typbasetype": "0", "typcategory": "S", "typcollation": "default", "typisdefined": "t", "typsubscript": "-", "typdefaultbin": "_null_", "typispreferred": "t", "array_type_name": "_text"}, "operators": [{"oprcom": "0", "oprcode": "anytextcat", "oprjoin": "-", "oprkind": "b", "oprleft": "anynonarray", "oprname": "||", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "bpchariclike", "oprjoin": "iclikejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "~~*", "oprrest": "iclikesel", "oprright": "text", "oprnegate": "!~~*(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "bpcharicnlike", "oprjoin": "icnlikejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "!~~*", "oprrest": "icnlikesel", "oprright": "text", "oprnegate": "~~*(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "bpcharicregexeq", "oprjoin": "icregexeqjoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "~*", "oprrest": "icregexeqsel", "oprright": "text", "oprnegate": "!~*(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "bpcharicregexne", "oprjoin": "icregexnejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "!~*", "oprrest": "icregexnesel", "oprright": "text", "oprnegate": "~*(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "bpcharlike", "oprjoin": "likejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "~~", "oprrest": "likesel", "oprright": "text", "oprnegate": "!~~(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "bpcharnlike", "oprjoin": "nlikejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "!~~", "oprrest": "nlikesel", "oprright": "text", "oprnegate": "~~(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "bpcharregexeq", "oprjoin": "regexeqjoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "~", "oprrest": "regexeqsel", "oprright": "text", "oprnegate": "!~(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "bpcharregexne", "oprjoin": "regexnejoinsel", "oprkind": "b", "oprleft": "bpchar", "oprname": "!~", "oprrest": "regexnesel", "oprright": "text", "oprnegate": "~(bpchar,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "json_object_field", "oprjoin": "-", "oprkind": "b", "oprleft": "json", "oprname": "->", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "json", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "json_object_field_text", "oprjoin": "-", "oprkind": "b", "oprleft": "json", "oprname": "->>", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_delete", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "-", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_exists", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "jsonb", "oprname": "?", "oprrest": "matchingsel", "oprright": "text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_object_field", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "jsonb", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "jsonb_object_field_text", "oprjoin": "-", "oprkind": "b", "oprleft": "jsonb", "oprname": "->>", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<=(text,name)", "oprcode": "namegetext", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "name", "oprname": ">=", "oprrest": "scalargesel", "oprright": "text", "oprnegate": "<(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<(text,name)", "oprcode": "namegttext", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "name", "oprname": ">", "oprrest": "scalargtsel", "oprright": "text", "oprnegate": "<=(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "nameiclike", "oprjoin": "iclikejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "~~*", "oprrest": "iclikesel", "oprright": "text", "oprnegate": "!~~*(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "nameicnlike", "oprjoin": "icnlikejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "!~~*", "oprrest": "icnlikesel", "oprright": "text", "oprnegate": "~~*(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "nameicregexeq", "oprjoin": "icregexeqjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "~*", "oprrest": "icregexeqsel", "oprright": "text", "oprnegate": "!~*(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "nameicregexne", "oprjoin": "icregexnejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "!~*", "oprrest": "icregexnesel", "oprright": "text", "oprnegate": "~*(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">=(text,name)", "oprcode": "nameletext", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "<=", "oprrest": "scalarlesel", "oprright": "text", "oprnegate": ">(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "namelike", "oprjoin": "likejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "~~", "oprrest": "likesel", "oprright": "text", "oprnegate": "!~~(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">(text,name)", "oprcode": "namelttext", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "<", "oprrest": "scalarltsel", "oprright": "text", "oprnegate": ">=(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<>(text,name)", "oprcode": "namenetext", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "<>", "oprrest": "neqsel", "oprright": "text", "oprnegate": "=(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "namenlike", "oprjoin": "nlikejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "!~~", "oprrest": "nlikesel", "oprright": "text", "oprnegate": "~~(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "nameregexeq", "oprjoin": "regexeqjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "~", "oprrest": "regexeqsel", "oprright": "text", "oprnegate": "!~(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "nameregexne", "oprjoin": "regexnejoinsel", "oprkind": "b", "oprleft": "name", "oprname": "!~", "oprrest": "regexnesel", "oprright": "text", "oprnegate": "~(name,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "starts_with", "oprjoin": "prefixjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "^@", "oprrest": "prefixsel", "oprright": "text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<=(text,text)", "oprcode": "text_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "text", "oprname": ">=", "oprrest": "scalargesel", "oprright": "text", "oprnegate": "<(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<(text,text)", "oprcode": "text_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "text", "oprname": ">", "oprrest": "scalargtsel", "oprright": "text", "oprnegate": "<=(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">=(text,text)", "oprcode": "text_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<=", "oprrest": "scalarlesel", "oprright": "text", "oprnegate": ">(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">(text,text)", "oprcode": "text_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<", "oprrest": "scalarltsel", "oprright": "text", "oprnegate": ">=(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "~<=~(text,text)", "oprcode": "text_pattern_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~>=~", "oprrest": "scalargesel", "oprright": "text", "oprnegate": "~<~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "~<~(text,text)", "oprcode": "text_pattern_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~>~", "oprrest": "scalargtsel", "oprright": "text", "oprnegate": "~<=~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "~>=~(text,text)", "oprcode": "text_pattern_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~<=~", "oprrest": "scalarlesel", "oprright": "text", "oprnegate": "~>~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "~>~(text,text)", "oprcode": "text_pattern_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~<~", "oprrest": "scalarltsel", "oprright": "text", "oprnegate": "~>=~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "textanycat", "oprjoin": "-", "oprkind": "b", "oprleft": "text", "oprname": "||", "oprrest": "-", "oprright": "anynonarray", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "textcat", "oprjoin": "-", "oprkind": "b", "oprleft": "text", "oprname": "||", "oprrest": "-", "oprright": "text", "oprnegate": "0", "oprresult": "text", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<=(name,text)", "oprcode": "textgename", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "text", "oprname": ">=", "oprrest": "scalargesel", "oprright": "name", "oprnegate": "<(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<(name,text)", "oprcode": "textgtname", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "text", "oprname": ">", "oprrest": "scalargtsel", "oprright": "name", "oprnegate": "<=(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "texticlike", "oprjoin": "iclikejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~~*", "oprrest": "iclikesel", "oprright": "text", "oprnegate": "!~~*(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "texticnlike", "oprjoin": "icnlikejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "!~~*", "oprrest": "icnlikesel", "oprright": "text", "oprnegate": "~~*(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "texticregexeq", "oprjoin": "icregexeqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~*", "oprrest": "icregexeqsel", "oprright": "text", "oprnegate": "!~*(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "texticregexne", "oprjoin": "icregexnejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "!~*", "oprrest": "icregexnesel", "oprright": "text", "oprnegate": "~*(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">=(name,text)", "oprcode": "textlename", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<=", "oprrest": "scalarlesel", "oprright": "name", "oprnegate": ">(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "textlike", "oprjoin": "likejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~~", "oprrest": "likesel", "oprright": "text", "oprnegate": "!~~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">(name,text)", "oprcode": "textltname", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<", "oprrest": "scalarltsel", "oprright": "name", "oprnegate": ">=(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<>(text,text)", "oprcode": "textne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<>", "oprrest": "neqsel", "oprright": "text", "oprnegate": "=(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<>(name,text)", "oprcode": "textnename", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "<>", "oprrest": "neqsel", "oprright": "name", "oprnegate": "=(text,name)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "textnlike", "oprjoin": "nlikejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "!~~", "oprrest": "nlikesel", "oprright": "text", "oprnegate": "~~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "textregexeq", "oprjoin": "regexeqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "~", "oprrest": "regexeqsel", "oprright": "text", "oprnegate": "!~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "textregexne", "oprjoin": "regexnejoinsel", "oprkind": "b", "oprleft": "text", "oprname": "!~", "oprrest": "regexnesel", "oprright": "text", "oprnegate": "~(text,text)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "ts_match_tq", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "@@", "oprrest": "matchingsel", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "ts_match_tt", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "@@", "oprrest": "matchingsel", "oprright": "text", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "=(text,name)", "oprcode": "nameeqtext", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "name", "oprname": "=", "oprrest": "eqsel", "oprright": "text", "oprnegate": "<>(name,text)", "oprresult": "bool", "oprcanhash": "t", "oprcanmerge": "t"}, {"oprcom": "=(text,text)", "oprcode": "texteq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "=", "oprrest": "eqsel", "oprright": "text", "oprnegate": "<>(text,text)", "oprresult": "bool", "oprcanhash": "t", "oprcanmerge": "t"}, {"oprcom": "=(name,text)", "oprcode": "texteqname", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "=", "oprrest": "eqsel", "oprright": "name", "oprnegate": "<>(text,name)", "oprresult": "bool", "oprcanhash": "t", "oprcanmerge": "t"}], "operator_classes": [{"opcname": "text_bloom_ops", "opcfamily": "brin/text_bloom_ops", "opcintype": "text", "opcmethod": "brin", "opcdefault": "f", "opckeytype": "text"}, {"opcname": "varchar_ops", "opcfamily": "btree/text_ops", "opcintype": "text", "opcmethod": "btree", "opcdefault": "f", "opckeytype": "0"}, {"opcname": "text_pattern_ops", "opcfamily": "btree/text_pattern_ops", "opcintype": "text", "opcmethod": "btree", "opcdefault": "f", "opckeytype": "0"}, {"opcname": "varchar_pattern_ops", "opcfamily": "btree/text_pattern_ops", "opcintype": "text", "opcmethod": "btree", "opcdefault": "f", "opckeytype": "0"}, {"opcname": "varchar_ops", "opcfamily": "hash/text_ops", "opcintype": "text", "opcmethod": "hash", "opcdefault": "f", "opckeytype": "0"}, {"opcname": "text_pattern_ops", "opcfamily": "hash/text_pattern_ops", "opcintype": "text", "opcmethod": "hash", "opcdefault": "f", "opckeytype": "0"}, {"opcname": "varchar_pattern_ops", "opcfamily": "hash/text_pattern_ops", "opcintype": "text", "opcmethod": "hash", "opcdefault": "f", "opckeytype": "0"}, {"opcname": "text_minmax_ops", "opcfamily": "brin/text_minmax_ops", "opcintype": "text", "opcmethod": "brin", "opcdefault": "t", "opckeytype": "text"}, {"opcname": "text_ops", "opcfamily": "btree/text_ops", "opcintype": "text", "opcmethod": "btree", "opcdefault": "t", "opckeytype": "0"}, {"opcname": "text_ops", "opcfamily": "hash/text_ops", "opcintype": "text", "opcmethod": "hash", "opcdefault": "t", "opckeytype": "0"}, {"opcname": "text_ops", "opcfamily": "spgist/text_ops", "opcintype": "text", "opcmethod": "spgist", "opcdefault": "t", "opckeytype": "0"}]}, "comparison_hash": "fdefd986eec7346d2a9f4f6a59a5fc233501b733fc579b0cbc1f61d6676fcef0", "manual_language": "zh", "operator_classes": [{"oid": "3126", "opcname": "text_ops", "opcowner": "POSTGRES", "opcfamily": "btree/text_ops", "opcintype": "text", "opcmethod": "btree", "oid_symbol": "TEXT_BTREE_OPS_OID", "opcdefault": "t", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "text_ops", "opcowner": "POSTGRES", "opcfamily": "hash/text_ops", "opcintype": "text", "opcmethod": "hash", "opcdefault": "t", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "varchar_ops", "opcowner": "POSTGRES", "opcfamily": "btree/text_ops", "opcintype": "text", "opcmethod": "btree", "opcdefault": "f", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "varchar_ops", "opcowner": "POSTGRES", "opcfamily": "hash/text_ops", "opcintype": "text", "opcmethod": "hash", "opcdefault": "f", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"oid": "4217", "opcname": "text_pattern_ops", "opcowner": "POSTGRES", "opcfamily": "btree/text_pattern_ops", "opcintype": "text", "opcmethod": "btree", "oid_symbol": "TEXT_BTREE_PATTERN_OPS_OID", "opcdefault": "f", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"oid": "4218", "opcname": "varchar_pattern_ops", "opcowner": "POSTGRES", "opcfamily": "btree/text_pattern_ops", "opcintype": "text", "opcmethod": "btree", "oid_symbol": "VARCHAR_BTREE_PATTERN_OPS_OID", "opcdefault": "f", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "text_pattern_ops", "opcowner": "POSTGRES", "opcfamily": "hash/text_pattern_ops", "opcintype": "text", "opcmethod": "hash", "opcdefault": "f", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "varchar_pattern_ops", "opcowner": "POSTGRES", "opcfamily": "hash/text_pattern_ops", "opcintype": "text", "opcmethod": "hash", "opcdefault": "f", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "text_ops", "opcowner": "POSTGRES", "opcfamily": "spgist/text_ops", "opcintype": "text", "opcmethod": "spgist", "opcdefault": "t", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "text_minmax_ops", "opcowner": "POSTGRES", "opcfamily": "brin/text_minmax_ops", "opcintype": "text", "opcmethod": "brin", "opcdefault": "t", "opckeytype": "text", "opcnamespace": "pg_catalog"}, {"opcname": "text_bloom_ops", "opcowner": "POSTGRES", "opcfamily": "brin/text_bloom_ops", "opcintype": "text", "opcmethod": "brin", "opcdefault": "f", "opckeytype": "text", "opcnamespace": "pg_catalog"}], "manual_documentation": "dedicated family chapter"}, "from": "17", "comparison": {"available": true, "changes": [], "prose_changed": true}}