oracle与sybase的区别是:1、SQL语法不一致,2、字段超长后处理机制不同,Sybase处理机制为自动截断,Oracle在输入超长字符时因无自动截断机制,3、中文字段字节长度不一致,Sybase数据库1个中文占2个字节,Oracle数据库1个中文占3个字节,4、字符类型转换,5、空值读取结果不一致,6、查询语句输出默认排序不一致,7、日期格式不一致。
本教程操作系统:Windows10系统、Dell G3电脑。
oracle与sybase的区别是:
(一)SQL语法不一致
1、字符串处理函数不同:例如Sybase为substring(),oracle为substr();取系统时间Oracle为sysdate,Sybase为getdate()。
2、多表联结语法不一样。
(二)字段超长后处理机制不同
超过数据库定义字段长度的输入,Sybase处理机制为自动截断,输入超长字符时交易成功;Oracle在输入超长字符时因无自动截断机制,则交易报错无法成功。这种不同的超长字符输入处理机制导致大量历史异常数据在Sybase成功,在Oracle交易失败。超长字段输入来源包括:(1)主机向系统数据库的输入数据;(2)系统自身页面前端未控制字符长度,输入超长的数据;(3)系统自身程序有超长函数名称,存入日志表报错;(4)关联系统输入超长字段。该差异引发的问题是本次迁移涉及范围最广的问题,涉及改造交易上百个。后针对字段超长的问题,项目讨论后决定重新梳理交易相关字段,补充测试用例,进行专项测试,针对重要外部系统输入的字段逐项对比排查。
(三)中文字段字节长度不一致
Sybase数据库1个中文占2个字节;Oracle数据库1个中文占3个字节,如部分输入字段在数据库迁移前后未对中文字段长度进行扩充,则会出现实际业务不一致的情况。例如:在系统的某个录入页面,第一版测试时,开发未对自定义备注(可输入中文)进行字段长度的扩充,导致自定义备注在数据库迁移前后内容由于超长被覆盖而导致不一致。需重点梳理业务字段及支持输入类型(是否含中文)。
(四)字符类型转换
Sybase和Oracle对于不同字符类别的处理机制不同;以char字符类型处理机制为例,Sybase中历史数据中有长度为1的数据‘6’,迁移到oracle后,取值时为会自动补空格变为‘6’,导致程序逻辑出错。刚开始开发人员在程序中通过trim过滤空格,后统一将char类型修改为varchar类型。
(五)空值读取结果不一致
Sybase和Oracle对于空值的处理机制不同,例如:对于0长度的空值‘’,Sybase存储为长度为1的空格:‘’,后续查询该字段报文时,该字段为长度为1的空格;Oracle则存储为null,后续查询该字段拼报文时,该字段取出为NULL,会少1个字段。
(六)查询语句输出默认排序不一致
例如:明细类交易,两个数据库输出顺序不一致;同时待处理任务输出顺序也不一致。
(七)日期格式不一致
Sybase与Oracle日期处理格式不一致。例如:Oracledatetime格式为to_date(‘2020-05-1012:00:00','yyyy-mm-ddHH24:mi:ss'),Sybasedatetime格式为‘05/10/202012:00:00AM'。
以上是oracle与sybase的区别是什么的详细内容。更多信息请关注PHP中文网其他相关文章!