返回首页

gbase数据、南大通用产品文档:GBase8sCHAR(n) 数据类型

更新日期:2024年09月11日

CHAR 数据类型存储任何字母、数字和符号组成的字符串。它可以根据数据库语言环
境存储单字节和多字节字符。
CHAR(n) 列的长度为 n 个字节,其中 1 ≤ n ≤ 32,767。如果未指定 n,那么
CHAR(1) 是缺省长度。字符列通常存储字母数字字符串,例如:姓名、地址和电话号码等
等。当将值作为 CHAR(n) 检索或存储时,只传输 n 个字节的数据。如果字符串短于 n
个字节,那么用空格将该字符串延长到声明的长度。如果数据值大于 n 个字节,那么插
入或检索已从右边截断至长度为 n 的数据字符串,并且数据库服务器不会发生异常。
这在多字节语言环境中不会创建部分字符。在从右至左语言环境(如阿拉伯语、希伯
来语或波斯语)中,是从左边截断的。
CHAR 数据类型声明中的大小规范可受字符类型声明中的逻辑字符语义一节中描述的
SQL_LOGICAL_CHAR 功能影响。
将 CHAR 值看作数字值
CHAR 数据类型存储数字值算术字符串操作数如果您打算对存储在列中的数字执行计
算,那么应将数字数据类型指定给该列。虽然可以在 CHAR 列中存储数字,但也许不能在
某些算术运算中使用这些数字。例如:如果将总和插入 CHAR 列中,并且如果 CHAR 列太
小而无法保存该值,那么可能会遇到溢出问题。在这种情况下,插入操作将失败。如果将
有前导零的数字(如一些邮政编码)作为数字类型 INTEGER 或 SMALLINT 存储,那么会

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 90 -
除去前导零。相反,可以将这些数字存储在 CHAR 列中。
排序和关系比较
CHAR 数据类型整理整理CHAR 数据类型一般而言,对 CHAR 值进行排序的整理顺序就
是代码集中字符的顺序。(一个例外情况是有范围的 MATCHES 运算符;请参阅整理
VARCHAR 值。)有关整理顺序的更多信息,请参阅《GBase 8s GLS 用户指南》。
代码集东亚语言环境多字节对于多字节语言环境,数据库支持代码集中的任何多字节
字符。当以 CHAR 数据类型存储多字节字符时,务必计算所需字节的数目。有关多字节字
符和语言环境的更多信息,请参阅《GBase 8s GLS 用户指南》。
关系运算符(), 空格填充 CHAR 值可将 CHAR 值与其他 CHAR 值进行比较,方法是用
空格填充右边长度较小的值直到这些值具有相同的长度,然后使用整理的代码集顺序来比
较这两个值。
CHAR 类型的不可打印字符
CHAR 值可以包括制表符、换行符、空格和不可打印的字符。但是,必须使用应用程
序来将不可打印的字符插入主变量中,并将主变量插入数据库中。在将不可打印字符传递
至数据库服务器之后,就可以存储或检索这些字符。在选择了不可打印字符之后,将其访
存到主变量中并使用您的显示机制来显示这些字符。
一个重要的异常是 ASCII 代码中的首值在 CHAR 数据类型的列中被用作数据结束终
止符。由于这个原因,不能从 CHAR 列检索相同字符串中的任何后续字符,因为数据库服
务器仅读取此空终止符前面的字符(如果有)。例如,不能将以下 7 字节的字符串用作
长度为 7 个字节的 CHAR 数据类型:
abc\0def
如果尝试使用 DB-Access 来显示不可打印字符,那么屏幕会返回不一致的结果。
(哪些字符是不可打印字符是特定于语言环境的。有关更多信息,请参阅《GBase 8s GLS
用户指南》中客户机和数据库服务器之间的代码集转换的论述。)

Recover success
对集群的备份数据进行恢复,恢复集群的第二个备份周期的最新备份点:
$ python $GCLUSTER_BASE/server/bin/gcrcman.py -d /home/gbase/backup -P
gbasedba -e "recover 1"

功能说明
MINUS(差运算符)返回结果集为第一个SELECT 语句的结果集,并且这个结果集
的查询结果所包含的信息不能出现在第二个查询语句结果集中。另外差运算不忽
略空值。
语法格式
select_statement1
MINUS
select_statement2
表5- 106 参数说明
参数名称


select_statement
SELECT 语句。
示例
示例1:SELECT ...MINUS SELECT...
示例中所用的表及数据:
CREATE TABLE t1 (a int , b varchar(10));
INSERT INTO t1 VALUES(1,'a'),(2,'b'),(3,'c');

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1100
INSERT INTO t1 VALUES(null,null);
CREATE TABLE t2 (c int ,d varchar(20),e varchar(5));
INSERT INTO t2 VALUES(1,'a','aa'),(2,'b','bb'),(4,'c','cc');
MINUS
执行结果:
gbase> SELECT a,b FROM t1;
+------+------+
| a
| b
|
+------+------+
|
1 | a
|
|
2 | b
|
|
3 | c
|
| NULL | NULL |
+------+------+
4 rows in set
gbase> SELECT c AS a, d AS b FROM t2;
+------+------+
| a
| b
|
+------+------+
|
1 | a
|
|
2 | b
|
|
4 | c
|
+------+------+
3 rows in set
gbase> SELECT a ,b FROM t1 MINUS SELECT c AS a, d AS b FROM t2;
+------+------+
| a
| b
|
+------+------+
|
3 | c
|
| NULL | NULL |
+------+------+
2 rows in set