今天给大家介绍下GBase 8a MPP Cluster支持的字符类型和二进制类型。

1 字符类型

GBase 8a MPP Cluster目前支持四种字符类型,如下表所示:

类型名称

最大长度

CHAR

255个字符

VARCHAR

32KB

10922字符(utf8)

16383字符(gbk)

8191字符(gb18030)

8191字符(utf8mb4)

TEXT

64KB

21845字符(utf8)

32767字符(gbk)

16383字符(gb18030)

16383字符(utf8mb4)

LONGTEXT

64MB

22369621字符(utf8),33554432字符(gbk),16777216字符(gb18030),16777216字符(utf8mb4)

1.1 CHAR

CHAR(n)

CHAR类型仅仅是为了兼容SQL标准,因此,不建议用户在实际的项目应用场景使用此数据类型,建议使用VARCHAR数据类型。

CHAR是CHARACTER的缩写。n表示该列中字符串的字符长度,其范围是1到255。

当存储的字符长度小于指定的长度n时,在字符串右边用空格补齐。

当读取CHAR值时,填充的空格依旧保留。

如果给一个定义为CHAR类型的列插入一个超出最大长度的字符串,那么系统将报告错误信息。

1.2 VARCHAR

VARCHAR(m)

存储的是变长字符串,最大支持32KB,m表示该列中串的字符长度,其范围对于utf8字符集是1到10922个字符,对于gbk字符集是1到16383个字符。

当存储VARCHAR类型的数据时,不会用空格填充补足列定义长度,存储的数据包含空格时,保留空格。

示例

示例1:VARCHAR数据类型不会补足列定义的长度,但会保留插入的数据中的空格。示例中所用的表及数据:

gbase> CREATE TABLE products (productName VARCHAR(100));
gbase> INSERT INTO products(productName) VALUES('南大通用');
gbase> 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

1.3 TEXT

TEXT类型仅仅是为了兼容其它数据库的类型,推荐使用VARCHAR类型。

TEXT类型最大支持64KB,定义TEXT列时,不能为它指定DEFAULT值。

1.4 LONGTEXT

LONGTEXT类型最大支持64MB,不能为它指定DEFAULT值。

2 二进制数据类型

GBase 8a MPP Cluster目前支持以下二进制数据类型,如下表所示:

类型名称

最大长度(字节)

BLOB

32767

LONGBLOB

67108864

使用BLOB数据类型,有如下约束:

  • BLOB列支持32KB的存储容量。
  • 创建表时,BLOB列不可以有DEFAULT值。
  • 查询语句中,BLOB列不支持过滤条件。
  • 查询语句中,BLOB列不支持OLAP函数。

以上就是今天的内容,感谢阅读~