---
title: "字符数据类型概述 | OceanBase 文档中心"
description: 字符数据类型概述 字符数据类型在数据库字符集或国家字符集中存储字符（字母数字）数据，即单词和自由格式的文本。字符数据类型与其他数据类型相比具有限制性，因此属性较少。本文主要提供 OceanBase 数据库当前版本所支持的数据类型的概览和字符集简介。 字符数据类型概览 字符数据存储在字符串中，其字节值与创建数据库时指定…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.0.0 企业版

# 字符数据类型概述

更新时间：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 数据库的字符处理能力。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
