• 数据库迁移-国产化-Oracle迁移至GBase8a(操作符)


    操作符

    综述

    Oracle 内置的 SQL 操作符与 GBase 8a 基本上都可以对应上。这些操作符可以分为 5 类。算术操作符、连接操作符、分级查询操作符、Multiset 操作符、 集合操作符。

    Oracle 10g 支持17个操作符,可以使用他们构建表达式。GBase 8a 支持的操作符功能和 Oracle 是一样的。但是有一些例外,例如 Oracle || (连接), 如果 GBase 8a 启动时使用 –ansi 选项,则支持 || 作为连接符,其他情况下 || 必须使用 GBase 8a 函数 CONCAT来代替。

    算术操作符

    每一个 Oracle 的算术操作符都有一个同样的 GBase 8a 操作符对应,在迁移的时候不需要进行修改。

    +

    在一元操作时,需要一个真实的数字或时间的表达式,在二元操作时需要两个数字或时间表达式。

    GBase 8a 替代: +

    在一元操作时,需要一个真实的数字或时间的表达式,在二元操作时需要两个数字或时间表达式。

    GBase 8a 替代: -

    *

    二元操作符,乘法的数学表达式。

    GBase 8a 替代: *

    /

    二元操作符,除法的数学表达式。

    GBase 8a 替代: /

    连接操作符

    如果 GBase 8a 启动时使用 –ansi 选项,则支持 || 作为连接符,这种情况下在迁移时不需要作改变。在默认的启动模式下,需要将 || 用 CONCAT('string1', 'string2') 来替代。Oracle 同样也有 CONCAT 函数,作用和 GBase 8a 的一样。

    ||

    字符和CLOB值的连接符。

    GBase 8a 替代:(--ansi 模式): ||

    GBase 8a 替代:(默认模式): CONCAT('string1', 'string2'),使用concat函数是正确的、完备的替换方式。

    Multiset 操作符

    Oracle支持MULTISET EXCEPT, MULTISET INTERSECT, 和 MULTISET UNION 等MultiSet操作符,不被 GBase 8a 不支持,也没有可替代的其它操作符。

    集合操作符

    Oracle 支持UNION、UNION ALL、INTERSECT和MINUS 四种集合操作符。

    GBase 8a 完全支持这四种集合操作符,功能表现与Oracle中的同名操作符完全相同,在迁移的过程中不做修改。

    操作符优先级

    在一个 SQL 表达式中如果存在多个操作符,数据库系统会按一定的顺序来执行他。Oracle 在执行对操作符的使用采取优先级从高到低的原则。同级操作符,遵循从左向右原则。圆括号中的操作优先与括号外的操作。GBase 8a 同样遵守这些规则。

    下表从高到低列出了 Oracle 和 GBase 8a 的操作符优先级。在这个表中没有包括 INTERSECT, MINUS, UNION ,联合操作都相当与原子数据值。在Oracle 中所有的集合操作符都拥有相同的优先级。

    Oracle

    GBase 8a

    一元 +,  一元 - , PRIOR,CONNECT_BY_ROOT  

    一元 +,一元 -  

    *, /

    *, /

    二元 +,二元 -, ||

    二元 +,二元 -

    SQL 谓词

    SQL谓词

  • 相关阅读:
    算法通关村-----图的基本算法
    【Java初阶】- - -代码块与内部类
    msys2 ffmpeg库编译安装(Windows篇)
    Linux基于多线程和任务队列实现生产消费模型
    【小游戏】2D游戏炸弹超人BombSuperman(无限关卡模式)
    NX/UG二次开发—Parasolid—PK_EDGE_ask_convexity
    【实战练习】汽油辛烷值优化建模(二)(问题一的详细讲解)
    编译原理—语法制导翻译、S属性、L属性、自上而下、自下而上计算
    速卖通批量注册买家号安全吗?怎么弄?
    求解多旅行推销员问题的两部分编码遗传算法算子
  • 原文地址:https://blog.csdn.net/huixinhuiyismile/article/details/126298112