Oracle转PostgreSQL

最近在做一些Oracle SQL转PostgreSQL的工作,顺便记录这些改变,以便以后再转换有个参考。

描述OraclePostgreSQL
分页select * from ( select z.*,rownum as num from( " + sql + " ) z ) where num>=" + startRow + " and num<=" + endRowselect z.* from ( " + sql + " ) z LIMIT " + pageSize + " OFFSET " + startRow
日期① select sysdate from dual
② select t.* from test_user t where sysdate < t.end_date +1
③ select t.* from test_user t where now() < date_trunc('day',t.end_date) + interval '1d'
④ select * from test_user where round(pwd_eff_date+pwd_eff_days-now())>0
① select now();
② select t.* from test_user t where now() < date_trunc('day',t.end_date) + interval '1d'
③ select trunc(date_trunc(‘day’,now()) - interval ‘60d’)
④ select * from test_user where (pwd_eff_date + (interval '1d' * pwd_eff_days))::date - now()::date >0
DB<driverClassName>oracle.jdbc.OracleDriver</driverClassName> <url>jdbc:oracle:thin:@192.168.1.1:1521:testdb</url><driverClassName>org.postgresql.Driver</driverClassName> <url>jdbc:postgresql://192.168.1.1:5432/testdb</url>
序列test_seq_log.nextvalnextval(‘test_seq_log’)
别名① update test_user t set t.test_username=‘123456’
② select * from (select * from TEST_STAFF where staff_id = ? or employee_id = ?) where status=‘1’
① update test_user set test_username='123456’
② select * from (select * from TEST_STAFF where staff_id = ? or employee_id = ?) result where status=‘1’
Rowselect t.*, t.rowid from test_user tselect t.*, t.ctid from test_user t
日期
nvlselect DISTINCT * from test_feature t where nvl(t.parent_id,0)=0select DISTINCT t.* from test_feature t where coalesce(t.parent_id,0)=0
分组SELECT COUNT(*) FROM ET_CHOICEITEM WHERE QUE_ID = 60421 ORDER BY ITEM_IDSELECT COUNT(*) FROM ET_CHOICEITEM WHERE QUE_ID = 60421 ORDER BY ITEM_ID
select sc.*,s.*,c.*,r.* from test_staffcourse sc,test_staff s,test_course c,test_result r where sc.training_id=s.training_id and sc.course_id=c.course_id and r.training_id(+)=sc.training_id and r.COURSE_ID(+)=sc.course_idselect sc.*,s.*,c.*,r.* from test_staffcourse sc join test_staff s on sc.training_id=s.training_id join test_course c on sc.course_id=c.course_id left join test_result r on r.training_id=sc.training_id and r.COURSE_ID=sc.course_id
connect by priorselect distinct * from TEST_FEATURE connect by prior PARENT_ID=FEATURE_ID start with FEATURE_ID in (11, 12) order by FEATURE_IDselect a.* from TEST_FEATURE a where a.FEATURE_ID in (11, 12) union all select distinct * from TEST_FEATURE b where b.FEATURE_ID in (select distinct c.parent_id from TEST_FEATURE c where c.FEATURE_ID in (11, 12)) order by FEATURE_ID
Decodedecode(sign(decode(sc.last_result,null,90000,0,9000,-1,90000,sc.last_result)-c.pass_mark),-1,0,1)=1)case when sign(case when sc.last_result=null then 90000 when sc.last_result=0 then 9000 when sc.last_result=-1 then 90000 else sc.last_result end - c.pass_mark) = -1 then 0 else 1 end = 1)
RownumSELECT ROWNUM, empno, ename, job FROM emp WHERE ROWNUM < 5 ORDER BY ename;select row_number() over () as rownum, * from emp limit 10 offset 5;

复制表结构:

create table test_user_backup_20210223 as
( select * from test_user)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值