oracle迁移至gbase,sql问题总结(完善中)

最近再做国产化适配,需要把oracle里面的数据迁移至gbase 8a库中,这边把迁移过程中遇到的sql问题,记录下,现在仅迁移了一部分,后续会继续完善

1.ORACLE里面的NVL2函数在8a中不支持,可换成DECODE函数

2.表别名必须加,上面是ORACLE写法,下面是8a写法

--ORACLE
select * from (
       select T.CITY, T.COMPANYNAME from TEST T
       )
--GBASE 8a
select * from (
       select T.CITY, T.COMPANYNAME from TEST T
       ) A

3.sql中注释去掉(8a的注释方式和oracle不同)

--ORACLE
select * from (
       --查询公司名称
       select /*T.CITY,*/ T.COMPANYNAME from TEST T
       )
--GBASE 8a
select * from (
       select  T.COMPANYNAME from TEST T
       )


4.新建用户不能使用dual表时,需要去授权(我的用户是TEST_RY)

gccli gclusterdb
grant select on gclusterdb.dual to TEST_RY;


5.表名不支持含有#,8a中的#代表单行注释,所以表名中不允许出现#


6.ORACLE里面的WITH语句不支持,修改参数即可支持(需要使用gbase的root用户登录,执行sql。root用户的密码默认为空

gccli -u root -p
show variables like '%cte%';
set global _t_gcluster_support_cte=1;


7.LISTAGG( ) WITHIN GROUP ( ) OVER ( )不支持改为 group_concat函数(需要根据业务逻辑自行修改)


8.group_concat函数不支持,需要修改两个参数

SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;


9.case when不支持子查询,需要用with解决,自行根据sql逻辑改sql

   

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-19 11:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-19 11:26:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-19 11:26:02       82 阅读
  4. Python语言-面向对象

    2024-03-19 11:26:02       91 阅读

热门阅读

  1. MQ横向对比:RocketMQ、Kafka、RabbitMQ、ActiveMQ、ZeroMQ

    2024-03-19 11:26:02       37 阅读
  2. IOS面试题object-c 136-140

    2024-03-19 11:26:02       31 阅读
  3. axios的安装和引用

    2024-03-19 11:26:02       42 阅读
  4. Jenkins环境搭建与使用

    2024-03-19 11:26:02       41 阅读
  5. WPF意外无法启动?try-catch也无法捕捉?0xc0000409?

    2024-03-19 11:26:02       50 阅读
  6. Docker 是什么,Docker 常用命令,怎么写Dockerfile

    2024-03-19 11:26:02       44 阅读