支持Oracle和MSSQL的语法要求

所有系统必须能够支持多数据库系统,对于SQL语法应该尽量使用简单、标准语法,特殊语句必须符合以下规定:

1、特殊语法类
   SQLServer语法:case [] when [] then [结论1] else [结论2] end
   SELECT CASE 1 WHEN 1 THEN 1 ELSE 0 END
   Oracle对应语法:decode([],[],[then结论1],[else结论2])
   SELECT DECODE(1,1,1,0) FROM DUAL

   SQLServer语法:LEFT JOIN、RIGHT JOIN
   SELECT * FROM TBL1 LEFT JOIN TBL2 ON TBL1.A = TBL2.A
   SELECT * FROM TBL1 RIGHT JOIN TBL2 ON TBL1.A = TBL2.A
   Oracle对应语法:+
   SELECT * FROM TBL1,TBL2 WHERE TBL1.A = TBL2.A(+)  --LEFT JOIN
   SELECT * FROM TBL1,TBL2 WHERE TBL1.A(+) = TBL2.A  --RIGHT JOIN

   INNER JOIN
   SQLServer语法:INNER JOIN
   Oracle对应语法:无,只能通过WHERE A.ID = B.ID的方式完成

   TOP
   SQLServer语法:TOP num
   Oracle对应语法:提供了更加高效的语法,而且功能更强大,不过除非必要否则最好不要用
   SELECT * FROM TBL1 WHERE ROWNUM <= num
   SELECT * FROM TBL1 WHERE ROWNUM >= num1 AND ROWNUM <= num2

说明:9i之后Oracle能够支持部分SQLServer的语法模式,目前公司的系统以10G为基础,需要先保证10G及SQLServer能够正常运行。Oracle的SELECT语句必须有FROM子句,
      对于如上选择无来源表的都统一使用对象DUAL;
  
2、特有函数类
   SQLServer          ----->          Oracle
   SUBSTRING                          SUBSTR
   LEN                                LENGTH
   +                                  ||          (字符串连接)
   CONVERT(varchar(10),[date],120)    TO_CHAR([date],[formatstring])     (转成日期格式为YYYY-MM-DD)
   GETDATE()                          SYSDATE
   CAST                               TO_XXX函数

3、多语句模式
   SQLServer必须用;进行分隔
   Oracle需要用begin...end进行处理
   例如:
   insert into tbl(a) values('1');insert into tbl(a) values('2');

   begin
     insert into tbl(a) values('1');
     insert into tbl(a) values('2');
   end;

说明:使用到某些函数及语法时最好能够进行确认一下Oracle10G版本是否能够支持,如果不行就需要采用多套语法的方式进行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值