GBase 8a MPP Cluster 目前支持三种字符类型,如下表所示:
类型名称 | 最大长度(字符) |
CHAR | 255 |
VARCHAR | 10922(utf8)、 16383(gbk) |
TEXT | 33554432 |
注: 字符集默认为 utf8。
CHAR
CHAR(m)
定长字符串。 CHAR 类型仅仅是为了兼容 SQL 标准,因此,不建议使用者在实际的项目应用场景使用此数据类型,建议使用 VARCHAR 数据类型。
CHAR 是 CHARACTER 的缩写。 m 表示该列中字符串的长度,其范围是 1 到255 个字符(字母或汉字)。
当存储的字符长度小于指定的长度 m 时,在字符串右边用空格补齐。
当读取 CHAR 值时,填充的空格依旧保留。
如果给一个定义为 CHAR 类型的列插入一个超出最大长度的字符串,那么系统将报告错误信息。
VARCHAR
VARCHAR(m)变长字符串, m 表示该列中串的长度,其范围是 1 到 10922 个字符(21844
字节)。当存储 VARCHAR 类型的数据时,不会用空格填充补足列定义长度,存储的数据包含空格时,保留空格。
示例 1: VARCHAR 数据类型不会补足列定义的长度,但会保留插入的数据中的空格。
示例中用到的表及数据:
CREATE TABLE products (productName VARCHAR(100));
INSERT INTO products(productName) VALUES('南大通用');
INSERT INTO products(productName) VALUES(' 南大通用');
gbase> SELECT productName, LENGTH(productName) AS length,
CHAR_LENGTH(productName) AS char_length FROM products;
+----------------+--------+-------------+
| productName | length | char_length |
+----------------+--------+-------------+
| 南大通用 | | 12 | 4 | | |
| | 南大通用 | | 14 | 6 | |
+----------------+--------+-------------+
2 rows in set
gbase> SELECT productName FROM products WHERE productName = '南大通用';
+--------------+
| productName |
+--------------+
| 南大通用 |
+--------------+
1 row in set
查询结果中的空格:
gbase> SELECT productName FROM products WHERE productName = ' +----------------+ | 南大通用'; |
| productName |
+----------------+
| 南大通用 |
+----------------+
1 row in set
TEXT
TEXT 类型仅仅是为了兼容其它数据库的类型,推荐使用 VARCHAR 类型。
TEXT 类型最大支持 33554432 字符的存储长度,定义 TEXT 列时,不能为它指定 DEFAULT 值。
二进制数据类型
GBase 8a MPP Cluster 目前支持以下二进制数据类型,如下表所示:
类型名称 | 最大长度(字节) |
BLOB | 32767 |
LONGBLOB | 67108864 |
使用 BLOB 数据类型,有如下约束:
1) BLOB 列支持 32KB 的存储容量。
2)创建表时, BLOB 列不可以有 DEFAULT 值。
3)查询语句中, BLOB 列不支持过滤条件。
4)查询语句中, BLOB 列不支持 OLAP 函数。