在DuckDB中,字符串可以存储在VARCHAR
字段中。
该字段允许存储Unicode字符。在内部,数据被编码为UTF-8。
名称 | 别名 | 描述 |
---|---|---|
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。
文本类型值
文本类型的值是字符串,也称为字符串值或简称为字符串。在运行时,字符串值通过以下方式之一构建:
- 引用其声明或隐含类型为文本数据类型的列
- string literals
- casting 表达式转换为文本类型
- 应用一个字符串操作符,或调用一个返回文本类型值的函数
包含特殊字符的字符串
要在字符串中使用特殊字符,请使用转义字符串字面量或美元引号字符串字面量。或者,您可以使用连接和chr
字符函数:
SELECT 'Hello' || chr(10) || 'world' AS msg;
┌──────────────┐
│ msg │
│ varchar │
├──────────────┤
│ Hello\nworld │
└──────────────┘