首批通过分布式安全可靠测评,为关键业务系统打造
字符数据类型概述
更新时间:2026-06-01 18:39:49
字符数据类型在数据库字符集或国家字符集中存储字符(字母数字)数据,即单词和自由格式的文本。字符数据类型与其他数据类型相比具有限制性,因此属性较少。本文主要提供 OceanBase 数据库当前版本所支持的数据类型的概览和字符集简介。
字符数据类型概览
字符数据存储在字符串中,其字节值与创建数据库时指定的字符集之一相对应。OceanBase 数据库支持单字节和多字节字符集。
说明
字符数据类型的列可以存储所有字母数字值,但是
NUMBER数据类型的列只能存储数字值。
OceanBase 数据库当前版本所支持的数据类型的详细信息如下表所示。
| 数据类型 | 长度类型 | 使用说明 | 长度说明 |
|---|---|---|---|
| CHAR(size [BYTE | CHAR]) | 定长 | 索引效率高,程序里面使用 trim 去除多余的空白。 |
参数 size 的取值范围为 [1,2000],默认值和最小值为 1。 存储大小为 size 个字节或字符。 |
| NCHAR[(size)] | 定长 | 使用 UNICODE 字符集(所有的字符使用两个字节表示) 。 | 参数 size 的取值范围为 [1,2000],默认值和最小值为 1。 存储大小为 size 字节的两倍。 |
| NVARCHAR2(size) | 变长 | 使用 UNICODE 字符集(所有的字符使用两个字节表示)。 | 参数 size 的取值范围为 [1,32767]。 字节的存储大小是所输入字符个数的两倍。 |
| VARCHAR2(size [BYTE | CHAR]) | 变长 | 使用 UNICODE 字符集(所有的字符使用两个字节表示)。 | 参数 size 的取值范围为 [1,32767]。 存储大小为输入数据的字节或字符的实际长度,而不是 size 个字节或字符。 |
| VARCHAR(size [BYTE | CHAR]) | 变长 | OceanBase 数据库中 VARCHAR 和 VARCHAR2 没有区别。 |
参数 size 的取值范围为 [1,32767]。 存储大小为输入数据的字节的实际长度,而不是 size 个字节。 |
说明
CHAR和VARCHAR2数据类型需要指定length语义,其默认值由系统变量NLS_LENGTH_SEMANTICS控制。
字符集简介
UNICODE 字符集
UNICODE 字符集是对字符的一种编码,具体的编码方式有 UTF-8、UTF-16、UTF-32 和压缩转换等,编码方式决定了一个字符的存储大小,中英文在不同的存储方式上使用的空间是不一样的。
三种编码方式的对比信息如下表所示。
| 编码方式 | 编码字节数 | BOM | 优点 | 缺点 |
|---|---|---|---|---|
| UTF-8 | 不定长编码方式,单字节(ASCII 字符)或多字节(非 ASCII 字符);最小 Code Unit 是 8 位。 | 无字节序:如果一个文本的开头有字节流 EF BB BF,表示是 UTF-8 编码。 | 较为理想的 UNICODE 编码方式:与 ASCII 编码完全兼容;无字节序;自同步和纠错能力强,适合网络传输和通信;扩展性好。 | 变长编码方式不利于程序内部处理。 |
| UTF-16 | 双字节或者四字节;最小 Code Unit 是 16 位。 | 有字节序:UTF-16LE(小端序)以 FF FE 代表,UTF-16BE(大端序)以 FE FF 代表。 | 最早的 Unicode 编码方式,已被应用于大量环境中;适合内存中 Unicode 处理;很多编程语言的 API 中作为 STRING 类型的编码方式。 | 无法兼容于 ASCII 编码;增补平面码点编码使用代理对,编码复杂;扩展性差。 |
| UTF-32 | 固定四字节;最小 Code Unit 是 16 位。 | 有字节序:UTF-16LE(小端序)以 FF FE 代表,UTF-16BE(大端序)以 FE FF 代表。 | 固定字节编码读取简单,编译程序内部处理;Unicode 码点和 Code Unit 一一对应关系。 | 所有字符以固定四字节编码,浪费存储空间和带宽;与 ASCII 编码不兼容;扩展性差;实际使用少。 |
数据库字符集
数据库字符集的用法如下:
用来存储
CHAR、VARCHAR2、CLOB等类型数据。用来标示诸如表名、列名以及 PL 变量等。
用来存储 SQL 和 PL 存储单元等。
国家字符集
国家字符集用来存储 NCHAR、NVARCHAR2、NCLOB 等类型的数据。
国家字符集实质上是为 OceanBase 数据库选择的附加字符集,使其不仅可以使用 CHAR 数据类型提供的数据库字符集,还可以通过 NCHAR 数据类型使用国家字符集,增强了OceanBase 数据库的字符处理能力。