返回首页

gbase数据、南大通用产品文档:GBase8s用于集合派生表的符合 ISO 的语法

更新日期:2024年09月11日

集合派生的表这一节中的查询示例通过使用 TABLE 关键字后面
(括号内)
跟 SELECT 语
句来指定集合派生的表。该语法是对 SQL 语言的 ANSI/ISO 标准的 GBase 8s 扩展。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 148 -
但是,在
(且仅在)SELECT 的 FROM 子句中,可以通过指定子查询来代替使用 SQL 符
合 ANSI/ISO 标准的语法,在不使用 TABLE 关键字或嵌套括号的情况下,来定义集合派
生的表。
下列查询在逻辑上等价于 图 3,并为集合派生的表 c_table 指定拍摄了列
表 s_month 和 s_amount。
图: 查询
SELECT * FROM (SELECT sales FROM sales_rep
WHERE sales_rep.rep_num = 102) c_table(s_month, s_amount);
图: 查询结果
s_month s_amount

1998-03 $53.22
1998-04 $18.22
如 GBase 8s 扩展语法中一样,声明派生表或其列的名称是可选的,而不是必需的。下列查
询对外部查询的 FROM 子句使用符合ANSI/ISO 标准的语法,并产生与图 5相同的结果:

图: 查询
SELECT * FROM (SELECT sales FROM sales_rep
WHERE sales_rep.rep_num = 102);
图: 查询结果
month amount

1998-03 $53.22
1998-04 $18.22

GBA-01BR-0002
错误码
错误标识
错误信息
GBA-01BR-0002

not enough disk space for recover
错误出现原因
恢复所需磁盘空间不足
分析与建议
清理磁盘空间再进行恢复

语法
DECODE(value,value1,result1, value2,result2, value3,result3,... , result)
函数说明
类似于CASE value WHEN value1 THEN result1 ....,唯一区别是如果value 为
NULL 值,可以和后面的NULL 值匹配。
示例
示例1:没有匹配的value 值,返回值为result。
gbase> SELECT DECODE(5,1,10,2,20,3,30,4,40, 50) FROM dual;
+-----------------------------------+
| DECODE(5,1,10,2,20,3,30,4,40, 50) |
+-----------------------------------+
|
50 |
+-----------------------------------+
1 row in set
示例2:value 为表达式,与value1 匹配,返回值为result1。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
679
gbase> SELECT DECODE( (2 * 5) ,10,100,20,200,600) FROM dual;
+-------------------------------------+
| DECODE( (2 * 5) ,10,100,20,200,600) |
+-------------------------------------+
|
100 |
+-------------------------------------+
1 row in set