
# 字符类型
GaussDB支持的字符类型如[表1]所示 。字符串操作符和相关的内置函数请参见[字符处理函数和操作符](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0358.html#ZH-CN_TOPIC_0000002559105793)。
 表1字符类型 
| 名称                                                                                                                                                                                                                                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 存储空间                                                                                                                                                                                                                                            |
|:---|:---|:---|
| CHAR(n) CHARACTER(n) NCHAR(n) | 定长字符串，不足补空格。n是指字节长度，如不带精度n，默认精度为1。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | n最大为10485760（即10MB）。                                                                                                                                                                                                                            |
| CHAR(n) CHARACTER(n) NCHAR(n) | 当sql_compatibility = 'MYSQL'时，设置参数b_format_version = '5.7'、b_format_dev_version = 's1'后： - 类型：n指字符长度，区间\[0,10485760\]。如不带精度n，默认精度为1。定长字符串，不足补充空格。  - 输入： - 作为表列和临时变量的数据类型：输入字符串字符个数在范围内可以正常输入，sql_mode参数值包含"strict_trans_tables"时，超过范围直接报错，否则按n最大字符长度截断处理并告警。    - 输出： - 作为表列和临时变量的数据类型：sql_mode参数值包含"pad_char_to_full_length"时，输出带有尾部空格的字符串，否则输出不带尾部空格的字符串。  - 作为函数参数和返回值，存储过程的参数：不支持长度校验（例如：自定义函数入参为CHAR(5)类型，输入一个字符串'123456'，不校验长度，可以直接传入参数）。     | 最大为10M个字符。                                                                                                                                                                                                                                      |
| VARCHAR(n) CHARACTER VARYING(n)                                                                                                                     | 变长字符串。PG兼容模式下，n是字符长度。其他兼容模式下，n是指字节长度。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | n最大为10485760（即10MB）。 不带n时，最大存储字节长度为1GB-85-4(存储长度参数的空间)-其余列长度，比如(a int, b varchar, c int)，varchar最大长度为1GB-85-4(存储长度参数的空间)-4(a列int的长度)-4(c列int的长度)=1,073,741,727‬。      |
| VARCHAR(n) CHARACTER VARYING(n)                                                                                                                     | 当sql_compatibility = 'MYSQL'时，设置参数b_format_version = '5.7'、b_format_dev_version = 's1'后： - n指字符长度，区间\[0,10485760\]，如不带精度n，默认为不限制长度，长度与TEXT类型相同。  - 输入： - 作为表列和临时变量的数据类型：输入字符串字符个数在范围内可以正常输入，sql_mode参数值包含"strict_trans_tables"时，超过范围直接报错，否则按n最大字符长度截断处理并告警。    - 输出：原字符串输出。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | n最大为10485760（即10MB）。 不带n时，最大存储字节长度为1GB-85-4(存储长度参数的空间)-其余列长度，比如(a int, b varchar, c int)，varchar最大长度为1GB-85-4(存储长度参数的空间)-4(a列int的长度)-4(c列int的长度)=1,073,741,727‬。    |
| VARCHAR2(n)                                                                                                                                                                                                                                                              | 变长字符串。是VARCHAR(n)类型的别名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | n最大为10485760（即10MB）。 不带n时，最大存储字节长度为1GB-85-4(存储长度参数的空间)-其余列长度，比如(a int, b varchar2, c int)，varchar2最大长度为1GB-85-4(存储长度参数的空间)-4(a列int的长度)-4(c列int的长度)=1,073,741,727‬。   |
| NVARCHAR2(n)                                                                                                                                                                                                                                                             | 变长字符串。在SQL_ASCII字符集下，n表示的字节；在非SQL_ASCII字符集下，n表示的是字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | n最大为10485760（即10MB）。 不带n时，最大存储字节长度为1GB-85-4(存储长度参数的空间)-其余列长度，比如(a int, b nvarchar2, c int)，nvarchar2最大长度为1GB-85-4(存储长度参数的空间)-4(a列int的长度)-4(c列int的长度)=1,073,741,727‬。 |
| TEXT                                                                                                                                                                                                                                                                     | 变长字符串。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 最大存储字节长度为1GB-85-4(存储长度参数的空间)-其余列长度，比如(a int, b text, c int)，text最大长度为1GB-85-4(存储长度参数的空间)-4(a列int的长度)-4(c列int的长度)=1,073,741,727‬。                                                                                                                |
| CLOB                                                                                                                                                                                                                                                                     | 文本大对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 最大为1GB-1，但还需要考虑到列描述头信息的大小，以及列所在元组的大小限制（也小于1GB-1），因此CLOB类型最大值可能小于1GB-1。                                                                                                                                                                          |
| TINYTEXT MEDIUMTEXT LONGTEXT                                                                                      | 当sql_compatibility = 'MYSQL'时，设置参数b_format_version = '5.7'、b_format_dev_version = 's1'后可以使用这些类型。 类型转换成TEXT类型，使用场景与TEXT类型相同。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 最大为1GB-1，但还需要考虑到列描述头信息的大小，以及列所在元组的大小限制（也小于1GB-1），因此TEXT类型最大值可能小于1GB-1。                                                                                                                                                                          |
   
![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
1. 除了每列的大小限制以外，每个元组的总大小也不可超过1GB-1字节，主要受列的控制头信息、元组控制头信息以及元组中是否存在NULL字段等影响。
2. NCHAR为bpchar类型的别名，VARCHAR2(n)为VARCHAR(n)类型的别名。
3. 在ORA兼容模式下，默认将接收到的空字符串转换为null。
 
GaussDB还支持另外两种定长字符类型，如[表2]所示。name类型只用在内部系统表中，作为存储标识符，不建议普通用户使用。该类型长度当前定为64字节（63可用字符加结束符）。类型"char"只用了一个字节的存储空间，在系统内部主要用于系统表，主要作为简单化的枚举类型使用。
 表2特殊字符类型 
| 名称     | 描述          | 存储空间  |
|:---|:---|:---|
| name   | 用于对象名的内部类型。 | 64字节。 |
| "char" | 单字节内部类型。    | 1字节。  |
   
