- 操作符
- 综述
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谓词 |