文档首页 > > 开发指南>

Teradata和Oracle语法兼容性差异

Teradata和Oracle语法兼容性差异

分享
更新时间:2021/04/07 GMT+08:00

GaussDB(DWS)支持Teradata和Oracle两种兼容模式,分别兼容Teradata语法和Oracle语法,不同兼容模式下的语法行为有一些差异。

表1 兼容项差异

兼容项

Teradata兼容

Oracle兼容

数据类型date

只有年月日

date会转为timestamp,包含年月日时分秒

空串

区分空串和NULL

只有NULL

空串转int

转换为0

NULL

超长字符自动截断

支持(GUC参数td_compatible_truncation打开)

不支持

varchar + int运算

转为numeric + numeric计算

转为bigint + int计算

case和coalesce表达式

兼容TD行为,支持数字和字符串之间的类型转换,比如coalesce参数输入int和varchar类型,解析成varchar类型。

报错

NULL拼接

GUC参数behavior_compat_options增加strict_text_concat_td选项后,兼容TD行为,NULL类型拼接后返回NULL。

例如,'abc'||NULL返回NULL。

非NULL对象与NULL拼接后返回非NULL对象。

例如,'abc'||NULL返回'abc'。

char(n)类型拼接

GUC参数behavior_compat_options增加bpchar_text_without_rtrim选项后,char(n)类型做拼接时,保留空格,并补足空格至指定的n长度。

例如,cast('a' as char(3))||'b'返回'a b'。

char(n)类型做拼接时移除右侧空格和占位。

例如,cast('a' as char(3))||'b'返回'ab'。

分享:

    相关文档

    相关产品