因为做数据库适配,记录一下关于mybatis,SQL server,Oracle的sql的用法区别。

1.MySQL中区分关键字和字段名称用的符号是`  ,SQL server用的是[]  ,Oracle用的是""  引号之中严格区分大小写 不带引号的字段会全部被默认成大写

2.在Mysql和SQL server中,日期类型的字段可以直接用字符串或者日期类型数值 进行添加和修改该字段的内容  Oracle只可以用日期类型的数值进行添加不可以使用字符串

3.在对日期类型的字段进行like模糊查询时,Mysql可以直接使用 字段名+like+'%%' 的形式查询 ,SQL server和Oracle则需要先将字段名对应数值转换为字符串类型在进行like操作

4.在Oracle中表名不可以使用 表名 AS 别名 的方式操作 ,必须去掉as才可以进行对表名起别名

5.Mysql有show tables like +表名 的操作,SQL server 和 Oracle中没有此种操作方法,只能根据表名到所有表中去查

6.Mysql有show create table+表名的操作,SQL server和Oracle中没有,SQL server和Oracle复制的表中没有原先的索引

7.Mysql有desc 表名 字段名  的操作 , SQL server和Oracle要根据表名和字段名分别去进行查询

8.Mysql的分页方法是用 limit 1,2 的处理 ,SQL server是用 select top 1 的方式处理 ,Oracle 是使用rownum字段

9.Mysql使用GROUP_CONCAT(字段)进行字段名分组拼接,SQL server使用STRING_AGG(字段名,',') , Oracle使用wm_concat(字段名)

10.MySQL和SQL server中的CONCAT('1','2','3')在拼接字符串或者字段时可以在括号内有多个数值,Oracle只可以有两个,需要多个可以内套concat或者使用||符号

11.Mysql中的concat在拼接字段的时候,如果其中一个字段为null则整体返回结果为null,SQL server和Oracle则会返回其中有值s字段的拼接结果

12.MySQL和SQL server和Oracle在添加字段及注解时sql语句不同

13.MySQL和SQL server和Oracle在查询数据库中某个表的信息时,sql不同,并且Oracle中没有table_type这个字段

14.MySQL可以直接使用select * from 表名 group by 字段 进行分组查询,而SQL server和Oracle中group by 后面的字段必须是包含在select的查询字段中,或者包含在函数中

15.MySQL和SQL server查询结果与字段名称一致,Oracle查询结果默认字段名称为大写字母

16.sqlserver和Mysql,oracle的for update的使用方式不同

17.MySQL中的drop table if exists 语法,SQL server和Oracle中没有此语法,需要嵌套内查询来进行操作

18.MySQL中的if函数在SQL server和Oracle中都不可用,如果要判断是否为null,在SQL server中可以用isnull,Oracle中用nvl(a,b)或者nvl2(a,b,c),NVL(Expr1,Expr2)如果Expr1为NULL,返回Expr2的值,否则返回Expr1的值,
NVL2(Expr1,Expr2,Expr3)如果Expr1为NULL,返回Expr3的值,否则返回Expr2的值

19.MySQL和Oracle中都有lpad函数,SQL server中要使用类似REPLICATE('0',4-LEN(CONVERT(varchar(4),id)))+CONVERT(varchar(4),id)的写法

20.MySQL和Oracle中都有substr函数,SQL server中类似函数为substring,而且其中的后两个参数不能为字符串类型

21.MySQL中有在添加的是否有if then的用法,SQL server和Oracle可能不行(待确认)

22.在Oracle中level字段必须要加上引号,不然会被当成关键字处理。

23.ORACLE中的关键字:level,resource

24.在Oracle中多个insert into 之间要用;隔开,前后要加begin   end; (代码块的形式)。只用分号隔开目前会报无效符号的错误(去掉行尾的;也会报同样的错误,推测可能为jdbcTemplate的问题)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值