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才会正确解析为字段名称。这也只是规避方法,更合理的方式是:不使用保留的关键字做表名、字段和别名。
注:对于其关键字,也适合于使用 表名/表别名限制定符.字段名称 的方式。

以下是已知现有的关键字(表达式),它们有特别含义。

关键字示例描述
CURRENT2024-04-18 12:45:58.000返回当前时间,该关键字可扩展使用(指定日期时间精度,如current year to second)
CURRENT_ROLErole1返回当前使用的角色
CURRENT_USERUSERgbasedbt返回当前用户
DEFAULT_ROLErole1返回当前默认的角色
DBSERVERNAMESITENAMEgbase01返回当前的实例名称
NULLNULL返回NULL
ROWID769返回该行数据的物理存储位置,注:rowid并不是连续的
ROWNUM1返回结果集中的ROWNUM序号
SYSDATE2024-04-18 12:45:58.00000返回当前时间,该关键字可扩展使用(指定日期时间精度,如sysdate year to second)
TODAY2024-04-18返回当前日期

注:以上关键字(表达式)可能在不同版本中不一样。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值