返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

GBA-02BR-0037
错误码
错误标识
错误信息
GBA-02BR-0037

Backup data between nodes conflict,
please run 'cleanup' and try again
错误出现原因
备份数据在节点间有冲突

GBase 8a MPP Cluster 产品手册
7 附录
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1667
分析与建议
执行cleanup,清除垃圾数据,然后再进行操作

大部分数据类型都可以使用比较操作符,进行比较并返回一个布尔类型的值。
比较操作符均为双目操作符,
待比较的两个数据类型必须是相同的数据类型或者是可以
进行隐式转换的类型。
GBase 8c 提供的比较操作符,参见表5-2。
表5-2 比较操作符
操作符
描述
<
小于

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
103
>
大于
<=
小于或等于
>=
大于或等于
=
等于
<> 或!=或^=
不等于
比较操作符可以用于所有相关的数据类型。
所有比较操作符都是双目操作符,
返回布尔
类型数值。当输入的数据不同且无法隐式转换时,比较操作将会失败。例如,1<2<3 表达式
是非法的,因为1 在表达式中视为布尔值,等同于TRUE,无法与数值类型通过小于号(<)
比较。

之前的章节显示了如何选择和排序表中所有的数据。然而,您经常希望看到的是一个或多
个特定列的数据。并且,公式是使用 Projection 和 FROM 子句指定列和表,并可以使用
ORDER BY 子句按照升序或降序对数据进行排序。
如果想要操作 orders 表中的所有客户号,那么使用以下查询中的语句。
图: 查询
SELECT customer_num FROM orders;
该结果显示了语句如何只选择 orders 表中 customer_num 列中的所有数据,
并列出所有订单
上的客户号,包括重复的客户号。
图: 查询结果
customer_num

104
101
104

122
123
124
126
127
输出包括若干重复,原因是某些客户下了多个订单。有时您想要在投影中看到重复的行。
而有时您却只想看到特异值,而不是每个值都出的频率。
要抑制重复行,可在选择列表的开头包括关键字 DISTINCT 或其同义词 UNIQUE,每个
查询级别一次,如以下查询所示。
图: 查询
SELECT DISTINCT customer_num FROM orders;

SELECT UNIQUE customer_num FROM orders;
要生成更可读的表,图 3将显示限制为仅显示一次 orders 表中的每个客户号。如下所示。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 28 -
图: 查询结果
customer_num

101
104
106
110
111
112
115
116
117
119
120
121
122
123
124
126
127
假设您正在处理客户电话,并且想要找到购买订单号 DM354331。要列出 orders 表中的所
有购买订单号,使用诸如以下查询所示的语句。
图: 查询
SELECT po_num FROM orders;
该结果显示了如何检索到 orders 表中 po_num 列的数据。
图: 查询结果
po_num

B77836
9270
B77890
8006
2865
Q13557
278693

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 29 -

然而,该列表顺序无用。可以添加 ORDER BY 子句来以升序对列数据进行排序,使得查
找特定 po_num 更容易,如下所示。
图: 查询
SELECT po_num FROM orders ORDER BY po_num;
图: 查询结果
po_num

278693
278701
2865
429Q
4745
8006
8052
9270
B77836
B77890

要从表中选择多个列,请在 Projection 子句的投影列表中列出它们。以下查询显示了选择
列的顺序就是检索列的顺序,从左到右。
图: 查询
SELECT ship_date, order_date, customer_num,
order_num, po_num
FROM orders
ORDER BY order_date, ship_date;
如对多个列进行排序所示,可以使用 ORDER BY 子句来以升序或降序对数据进行排序和
执行嵌套排序。此结果显示了升序。
图: 查询结果
ship_date order_date customer_num order_num po_num

06/01/1998 05/20/1998 104 1001 B77836
05/26/1998 05/21/1998 101 1002 9270
05/23/1998 05/22/1998 104 1003 B77890
05/30/1998 05/22/1998 106 1004 8006

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 30 -
06/09/1998 05/24/1998 116 1005 2865
05/30/1998 112 1006 Q13557
06/05/1998 05/31/1998 117 1007 278693
07/06/1998 06/07/1998 110 1008 LZ230
06/21/1998 06/14/1998 111 1009 4745
06/29/1998 06/17/1998 115 1010 429Q
06/29/1998 06/18/1998 117 1012 278701
07/03/1998 06/18/1998 104 1011 B77897
07/10/1998 06/22/1998 104 1013 B77930
07/03/1998 06/25/1998 106 1014 8052
07/16/1998 06/27/1998 110 1015 MA003
07/12/1998 06/29/1998 119 1016 PC6782
07/13/1998 07/09/1998 120 1017 DM354331
07/13/1998 07/10/1998 121 1018 S22942
07/16/1998 07/11/1998 122 1019 Z55709
07/16/1998 07/11/1998 123 1020 W2286
07/25/1998 07/23/1998 124 1021 C3288
07/30/1998 07/24/1998 126 1022 W9925
07/30/1998 07/24/1998 127 1023 KF2961
当对表中的若干列使用 SELECT 和 ORDER BY 时,您会发现使用整数来在 ORDER BY
子句中表示列的位置非常有用。当整数是 ORDER BY 列表中的元素时。数据库服务器将
它看作是投影列表中的位置。例如,在 ORDER BY 列表中使用 3(ORDER BY 3)表示
投影列表中的第三项。以下查询中的语句检索和显示相同数据,如下图 12所示。
图: 查询
SELECT customer_num, order_num, po_num, order_date
FROM orders
ORDER BY 4, 1;

SELECT customer_num, order_num, po_num, order_date
FROM orders
ORDER BY order_date, customer_num;
图: 查询结果
customer_num order_num po_num order_date

104 1001 B77836 05/20/1998
101 1002 9270 05/21/1998

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 31 -
104 1003 B77890 05/22/1998
106 1004 8006 05/22/1998
116 1005 2865 05/24/1998
112 1006 Q13557 05/30/1998
117 1007 278693 05/31/1998
110 1008 LZ230 06/07/1998
111 1009 4745 06/14/1998
115 1010 429Q 06/17/1998
104 1011 B77897 06/18/1998
117 1012 278701 06/18/1998
104 1013 B77930 06/22/1998
106 1014 8052 06/25/1998
110 1015 MA003 06/27/1998
119 1016 PC6782 06/29/1998
120 1017 DM354331 07/09/1998
121 1018 S22942 07/10/1998
122 1019 Z55709 07/11/1998
123 1020 W2286 07/11/1998
124 1021 C3288 07/23/1998
126 1022 W9925 07/24/1998
127 1023 KF2961 07/24/1998
当将整数指定给列名时,可以在 ORDER BY 子句中包括 DESC 关键字。如下所示。
图: 查询
SELECT customer_num, order_num, po_num, order_date
FROM orders
ORDER BY 4 DESC, 1;
在此示例中,数据先按 order_date 以降序排序再按 customer_num 以升序排序。

选择子串
要选择字符列的部分值,请在投影列表中包含一个子串。假设市场营销部门计划向客户寄
邮件并想要客户的基于邮政编码的地理分布。可编写与以下图中显示的查询相似的查询。
图: 查询
SELECT zipcode[1,3], customer_num
FROM customer
ORDER BY zipcode;

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 32 -
该查询使用子串来选择 zipcode 列的前三个字符(它们标识州)和全部 customer_num,并
按邮政编码以升序列出它们,如以下结果所示。
图: 查询结果
zipcode customer_num

021 125
080 119
085 122
198 121
322 123

943 103
943 107
946 118

ORDER BY 和非英文数据
缺省情况下,对于数据库数据,GBase 8s 数据库服务器使用美国英语语言环境,称为语言
环境。
美国英语语言环境指定数据以代码集顺序存储。
此缺省语言环境使用 ISO 8859-1 代
码集。
如果您的数据库包含非英语数据,那么应在 NCHAR(或 NVARCHAR)列中存储非英语
数据,以获取按语言排序的结果。ORDER BY 子句应以适合于语言的顺序返回数据。