云数据库OceanBase入门教程 OceanBase NCHAR 数据类型

2024-02-26 开发教程 云数据库OceanBase入门教程 匿名 3

NCHAR​ 是 ​UNICOD​E 字符数据类型,长度固定。您在创建数据库时,列的最大长度由国家字符集定义确定。创建包含 ​NCHAR​ 数据类型列的表时,以字符定义列长度。字符数据类型 ​NCHAR​ 的宽度规范是指字符数。允许的最大列大小为 2000 字节。

如果希望用较少的空间来存储中文,可以选择 ​NCHAR​ 类型。

使用 ​NCHAR​ 来存储数据时,如果存储的数据没有达到指定长度,那么数据库将自动补足空格。指定长度时,采用 ​CHAR​ 为计量单位,不可以手动指定其他单位。

注意
您不能将 ​CHAR​ 值插入 ​NCHAR​ 列,也不能将 ​NCHAR​ 值插入 ​CHAR 列。

语法

NCHAR[(size)]

参数

参数

说明

size

表示定长字符数据的长度大小,最大大小由国家字符集定义确定,上限为 2000 个字节。默认定长字符数据的长度最小为 1 个字符。

更多信息

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 数据库选择的附加字符集,主要作用是为了增强 OceanBase 数据库的字符处理能力,​NCHAR​ 数据类型使用国家字符集,在使用 ​CHAR​ 数据类型提供的数据库字符集的同时,​NCHAR​ 类型提供了除了数据库字符集之外的另一种字符集选择。