文本类型
在 Goose 中,字符串可存储在 VARCHAR 字段中。
该字段支持存储 Unicode 字符,内部以 UTF-8 编码。
| Name | Aliases | Description |
|---|---|---|
VARCHAR | CHAR, BPCHAR, STRING, TEXT | 可变长度字符串 |
VARCHAR(n) | CHAR(n), BPCHAR(n), STRING(n), TEXT(n) | 可变长度字符串。最大长度 n 不生效,仅用于兼容性 |
指定长度限制
为 VARCHAR、STRING 和 TEXT 类型指定长度既非必需,也不会影响系统行为。指定长度不会提升性能,也不会减少数据库中字符串的存储空间。支持这些变体是为了兼容那些要求必须指定字符串长度的其他系统。
如果你希望出于数据完整性原因限制 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);
文本类型值
文本类型的值是字符序列,也称为字符串值,或简称字符串。在运行时,字符串值可通过以下方式构造:
- 引用声明类型或推断类型为文本数据类型的列
- string literals
- 将表达式转换为文本类型
- 应用字符串运算符,或调用返回文本类型值的函数
含特殊字符的字符串
若要在字符串中使用特殊字符,可使用转义字符串字面量或dollar-quoted 字符串字面量。另外,也可以使用拼接和 chr 字符函数:
SELECT 'Hello' || chr(10) || 'world' AS msg;
┌──────────────┐
│ msg │
│ varchar │
├──────────────┤
│ Hello\nworld │
└──────────────┘