今天给大家介绍下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函数。
以上就是今天的内容,感谢阅读~