跳到主要内容

文本类型

在 Goose 中,字符串可存储在 VARCHAR 字段中。 该字段支持存储 Unicode 字符,内部以 UTF-8 编码。

NameAliasesDescription
VARCHARCHAR, BPCHAR, STRING, TEXT可变长度字符串
VARCHAR(n)CHAR(n), BPCHAR(n), STRING(n), TEXT(n)可变长度字符串。最大长度 n 不生效,仅用于兼容性

指定长度限制

VARCHARSTRINGTEXT 类型指定长度既非必需,也不会影响系统行为。指定长度不会提升性能,也不会减少数据库中字符串的存储空间。支持这些变体是为了兼容那些要求必须指定字符串长度的其他系统。

如果你希望出于数据完整性原因限制 VARCHAR 列中的字符数,应使用 CHECK 约束,例如:

CREATE TABLE strings (
val VARCHAR CHECK (length(val) <= 10) -- val has a maximum length of 10
);

VARCHAR 字段支持存储 Unicode 字符,内部以 UTF-8 编码。

指定压缩类型

你可以通过 USING COMPRESSION 子句为字符串指定压缩类型。 例如,要使用 zstd 压缩,请执行:

CREATE TABLE tbl (s VARCHAR USING COMPRESSION zstd);

文本类型值

文本类型的值是字符序列,也称为字符串值,或简称字符串。在运行时,字符串值可通过以下方式构造:

含特殊字符的字符串

若要在字符串中使用特殊字符,可使用转义字符串字面量dollar-quoted 字符串字面量。另外,也可以使用拼接和 chr 字符函数

SELECT 'Hello' || chr(10) || 'world' AS msg;
┌──────────────┐
│ msg │
│ varchar │
├──────────────┤
│ Hello\nworld │
└──────────────┘

函数

请参阅文本函数模式匹配