本文主要是介绍GBase 8s 中的关键字(表达式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
GBase 8s中有一些特殊的关键字,比如rowid,rownum这样的,可以直接在查询语句中直接使用,表示特定的含义。
这种类型的关键字,在使用到表上时需要特别小心,否则可能得非预想要的结果。
如:
select * from tab1 where default_role like '%N%';
表面上的意思是:查询tab1中default_role字段中包含’N’字符的数据,select * from tab1返回的default_role字段中也有包含’N’的数据。但它却返回了空结果?!为什么呢?
原因就是DEFAULT_ROLE是内置关键字,直接写DEFAULT_ROLE是获取当前用户的默认角色,当前默认角色名并不包含’N’,因此该语句应该改成
select * from tab1 where tab1.default_role like '%N%';
也就是说:使用表名/表别名限制定符.字段名称时,SQL才会正确解析为字段名称。这也只是规避方法,更合理的方式是:不使用保留的关键字做表名、字段和别名。
注:对于其关键字,也适合于使用 表名/表别名限制定符.字段名称 的方式。
以下是已知现有的关键字(表达式),它们有特别含义。
关键字 | 示例 | 描述 |
---|---|---|
CURRENT | 2024-04-18 12:45:58.000 | 返回当前时间,该关键字可扩展使用(指定日期时间精度,如current year to second) |
CURRENT_ROLE | role1 | 返回当前使用的角色 |
CURRENT_USERUSER | gbasedbt | 返回当前用户 |
DEFAULT_ROLE | role1 | 返回当前默认的角色 |
DBSERVERNAMESITENAME | gbase01 | 返回当前的实例名称 |
NULL | NULL | 返回NULL |
ROWID | 769 | 返回该行数据的物理存储位置,注:rowid并不是连续的 |
ROWNUM | 1 | 返回结果集中的ROWNUM序号 |
SYSDATE | 2024-04-18 12:45:58.00000 | 返回当前时间,该关键字可扩展使用(指定日期时间精度,如sysdate year to second) |
TODAY | 2024-04-18 | 返回当前日期 |
注:以上关键字(表达式)可能在不同版本中不一样。
这篇关于GBase 8s 中的关键字(表达式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!