GBase 8s随机排序查询

从oracle迁移到GBase 8s数据库的过程中,有类似

select t.*
from t
order by dbms_random.value

进行随机排序查询的写法。
GBase 8s默认不支持dbms_random之类的函数,这些函数存在称为datablade的扩展包中,以下示例在库中注册excompat。

1,使用gbasedbt用户登陆,切换到 $GBASEDBTDIR/extend/excompat.1.0 目录下

  cd $GBASEDBTDIR/extend/excompat.1.0

2,临时取消当前的DB_LOCALE和CLIENT_LOCALE环境变量

  unset DB_LOCALE
  unset CLIENT_LOCALE

3,使用 blademgr 注册 excompat.1.0,以下是各步骤及说明

  blademgr                               # 进入 blademgr,提示符如: 数据库服务名>
  服务名> show databases                  # 显示可加载模块的库
  服务名> list testdb                     # 假设我们需要在testdb库中注册,先查看该有是否有注册模块
  服务名> register excompat.1.0 testdb    # 注册模块,要求有二次确认
  服务名> quit                            # 退出注册模块

4,使用 dbms_random_random 函数

-- 注意:该写法(order by 函数)并不是所有版本都支持
select t.* from systables t order by dbms_random_random();

-- 该写法均支持
select dbms_random_random(), t.*
from systables t
order by 1;

按实际需要修改写法。

标签: none

添加新评论