character varying
变长字符串
当前查看 PostgreSQL 18。
中文定义与说明
变长字符串
同版本中文手册节选
表 8.4 显示了在 PostgreSQL 里可用的一般用途的字符类型。
SQL 定义了两种主要字符类型:character varying( 和
n)character(,其中
n)n 是正整数。这两种类型都可以存储长度最多为 n 个字符(而不是字节)的字符串。试图把更长的字符串存入这些类型的列时会报错,除非超出的字符全部都是空格,在这种情况下字符串会被截断到最大长度。(这一多少有些奇怪的例外是 SQL 标准要求的。)不过,如果显式把一个值转换为
character varying( 或
n)character(,那么超长的值会被截断为 n)n 个字符而不会报错。(这同样是 SQL 标准要求的。)如果要存储的字符串短于声明长度,character 类型的值会用空格填充;character varying 类型则只是简单地存储较短的字符串。
此外,PostgreSQL 还提供
text 类型,用于存储任意长度的字符串。虽然
text 类型不在 SQL 标准中,但其他若干 SQL 数据库管理系统也提供了它。text 是
PostgreSQL 的原生字符串数据类型,因为大多数对字符串进行操作的内置函数都声明为接受或返回
text,而不是 character varying。在很多场景下,character varying 的行为就像是建立在
text 之上的一个域。
类型名 varchar 是 character varying 的别名,而 bpchar(带长度说明时)和 char
是 character 的别名。varchar 和
char 这两个别名由 SQL 标准定义;bpchar 则是 PostgreSQL
的扩展。
PG10–20 核心源码清单。类型转换与操作符类列出源码显式声明的关系;缺少记录不能排除通过其他机制进行转换或使用索引。
定义
SQL 名称与别名: varchar, varchar [ ( n ) ]
变长字符串
character varying [ ( n ) ]
- 目录名称
- pg_catalog.varchar
- 类型 OID
- 1043
- 类型种类
- 基础类型
- 声明长度
- 变长(varlena)
- 存储策略
- 扩展
- 输入函数
- varcharin
- 输出函数
- varcharout
- 手册中的声明
- character varying( n ) , varchar( n )
- 手册说明
- 有长度限制的变长
系统目录属性
此构建的源码初始化值。字段含义参见 pg_type 。包含头文件默认值;依赖构建的常量保留符号形式,不作为服务器运行时实测。
oid1043descr'varchar(length)' non-blank-padded string, variable storage lengthtypacl_null_typlen-1typelem0typnamevarchartypsendvarcharsendtyptypebtypalignityparray0typbyvalftypdelim','typinputvarcharintypmodinvarchartypmodintypndims0typownerPOSTGREStyprelid0typmodoutvarchartypmodouttypoutputvarcharouttyptypmod-1typanalyze-typdefault_null_typnotnullftypreceivevarcharrecvtypstoragextypbasetype0typcategoryStypcollationdefaulttypisdefinedttypnamespacepg_catalogtypsubscript-typdefaultbin_null_array_type_oid1015typispreferredfarray_type_name_varchar
类型转换 15
与此类型相关的显式 pg_cast 记录。PostgreSQL 还支持 pg_cast 之外的类型转换,缺少记录不能证明转换不可能。
| 源类型 | 目标类型 | 转换上下文 | 转换方式 | 函数 |
|---|---|---|---|---|
varchar | regclass | 隐式 | 函数 | regclass |
text | varchar | 隐式 | 二进制兼容 | 0 |
bpchar | varchar | 隐式 | 函数 | text(bpchar) |
varchar | text | 隐式 | 二进制兼容 | 0 |
varchar | bpchar | 隐式 | 二进制兼容 | 0 |
char | varchar | 赋值 | 函数 | text(char) |
name | varchar | 赋值 | 函数 | varchar(name) |
varchar | char | 赋值 | 函数 | char(text) |
varchar | name | 隐式 | 函数 | name(varchar) |
cidr | varchar | 赋值 | 函数 | text(inet) |
inet | varchar | 赋值 | 函数 | text(inet) |
bool | varchar | 赋值 | 函数 | text(bool) |
xml | varchar | 赋值 | 二进制兼容 | 0 |
varchar | xml | 显式 | 函数 | xml |
varchar | varchar | 隐式 | 函数 | varchar(varchar,int4,bool) |
版本比较
PostgreSQL 17 → 18。属性比较不包含构建标识和说明正文;原始目录字段与源描述保留原文。
这两个样本的系统目录和结构化属性没有变化。
文档与源码
- 构建
- 18.6 · https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
- 指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f
相关条目
全部数据类型 · 下载此版本 JSON · 最早收录的样本不代表该类型的实际引入版本。