mybatis中oracle 和postgreql常用的区别

  1. 获取当前时间:

oracle:  
    select sysdate from dual ;
        2023-03-09 18:17:40

postgresql:    
    select current_timestamp ;
         2023-03-09 18:16:19.370735+08
 
     select now() ;
         2023-03-09 18:16:41.057221+08
 
     select current_date;
         2023-03-09
  1. 分页写法:

Oracle:分页查询使用 rownum 
    select * from (select rownum r,e.* from tableName e where rownum <=5) t where r>0;


PostgreSQL:使用 limit #{查询条数} offset #{从第几条开始,从0开始}
    select * from tableName limit 5 offset 0;
  1. 字段进行比较:

例如 name是字符型,sex是数字型

oracle 类型会自动转换
     select * from tableName where name = sex ;

postgresql:CAST 转成相同类型
     select * from tableName where name = cast(sex as char) ;
string 转 integer
    SELECT CAST ('100' AS INTEGER);

4.mybatis中传入时间类型

oracle :
    select to_char(#{checkDate,jdbcType=DATE},'yyyy-MM-dd') from dual;

postgresql:
    select to_char(#{checkDate,jdbcType=DATE}::date,'yyyy-MM-dd') ;
  1. 生成32位主键ID:

oracle:    select sys_guid() from dual;

postgresql 需要自己创建函数:  select spauth.sys_guid();
    
  1. 空值替换:

oracle: select nvl(#{name,jdbcType=VARCHAR},'123') from dual;

  1. 条件判断:

oracle: select decode(#{sex,jdbcType=VARCHAR},'1','男','0','女','未知') sex from dual;

postgresql :PG没有decode判断,需要用case when then 代替,函数后 取别名必须加 as 
    select case #{sex,jdbcType=VARCHAR} when '1' then '男'
                                        when '0' then '女' 
                                        else '未知' end as sex ;

7.查询另一个查询的结果,表加别名:

oracle 不需要加别名
 select * from ( select * from tableA) ;
postgresql 需要加别名
select A.* from ( select * from tableA) as A ;

8.更新

oracle: 更新表字段加 表的别名
update tableA as a set a.name = (select b.name from tableB as b where a.id = b.id);

posetgresql:更新表字段不能加别名
update tableA as a set name = (select b.name from tableB as b where a.id = b.id);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值