返回首页

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

更新日期:2024年09月11日

语法
CASE value WHEN [compare-value] THEN result [WHEN [compare-value]
THEN result ...] [ELSE result] END
函数说明
逐一匹配,当满足value=compare-value 时,返回对应的result,如果未找到匹配
项,则返回ELSE 后的result。如果没有ELSE 子句,默认返回NULL。
如果条件中compare-value 有重叠,即value 值满足多个compare-value 条件时,
只返回第一个满足的值。
语法
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...]
[ELSE result] END
函数说明
逐一判断,
当condition 为TRUE 时,
返回对应的result,
如果condition 全为FALSE,
则返回ELSE 后的result。如果没有ELSE 子句,默认返回NULL。
一个CASE 表达式的默认返回值类型是所有返回值的相容集合类型,具体情况视
其所在语境而定:
如用在字符串语境中,则返回结果为字符串;
如用在数字语境中,则返回结果为十进制值的实数值或整数值。
示例
示例1:value=compare-value,返回对应的result 值。
gbase> SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE
'more' END FROM dual;
+-------------------------------------------------------------+
| CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END
|
+-------------------------------------------------------------+
| one
|
+-------------------------------------------------------------+
1 row in set
示例2:condition 为TRUE 时,返回对应的result 值。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
678
gbase> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END FROM
dual;
+---------------------------------------------+
| CASE WHEN 1>0 THEN 'true' ELSE 'false' END
|
+---------------------------------------------+
| true
|
+---------------------------------------------+
1 row in set
示例3:value 不等于compare-value,返回值为NULL。
gbase> SELECT CASE 'c' WHEN 'a' THEN 1 WHEN 'b' THEN 2 END
FROM dual;
+-----------------------------------------------+
| CASE 'c' WHEN 'a' THEN 1 WHEN 'b' THEN 2 END
|
+-----------------------------------------------+
|
NULL |
+-----------------------------------------------+
1 row in set

WDR Snasphot 在启动后
(打开参数enable_wdr_snapshot)

会在用户表空间”
pg_default”

数据库”postgres”下新建schema “snapshot”,用于持久化WDR 快照数据。默认初始化
用户或monadmin 用户可以访问Snapshot Schema。
根据参数wdr_snapshot_retention_days 来自动管理快照的生命周期。

使用 RENAME COLUMN 语句来更改列的名称。RENAME COLUMN 语句是对
SQL 的 ANSI/ISO 标准的扩展。
语法

元素
描述
限制
语法
new_column 您在此声明
来替代
old_column
的名称
在 table 中的列名称中必须是
唯一的。另请参阅 影响触发器
的方式。
标识符
old_column 要重命名的

在表内必须存在
标识符

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 794
owner
表的所有者
必须为表的所有者
所有者名称
table
包含
old_column
的表
必须注册在当前数据库中
标识符
用法
如果任何下列条件为真,则您可重命名表的列:

您拥有该表或有对该表的 Alter 权限。

您有对该数据库的 DBA 权限。
该列可在 CREATE EXTERNAL TABLE 语句定义的表对象中。
示例
下列示例将新名称 c_num 赋予 customer 表中的 customer_num 列:
RENAME COLUMN customer.customer_num TO c_num;
影响视图和检查约束的方式
如果您重命名出现在视图中的列,则更新在 sysviews 系统目录表中的视图定义的
文本,来反映新的列名称。如果您重命名出现在检查约束中的列,则更新在
syschecks 系统目录表中的检查约束的文本,来反映新的列名称。
影响触发器的方式
如果您重名出现在触发器定义内的列,则仅在下列情况下才用新的名称代替它:

当它作为触发器的 FOR EACH ROW 活动子句内的相关名称的一部分出
现时

当它作为 EXECUTE FUNCTION(或 EXECUTE PROCEDURE)语句的
INTO 子句中的相关名称的一部分出现时

当它作为 UPDATE 子句中的触发器列出现时
当触发器执行时,如果数据库服务器遇到在该表中不再存在的列名称时,在返回
错误。