1、jar包/maven依赖的更换
2、driverClassName等信息的更换
3、字段类型问题
5、序列问题
oracle获取序列: my_sequece.nextval
postgre获取序列: nextval('my_sequece')
6、sysdate替换方案
差异 | Oracle | PG |
---|---|---|
当前日期 时间 | sysdate | now() current_timestamp |
当前日期 | trunc(sysdate) | now() :: date |
?分钟前 | sysdate - ?/24/60 | now()- ‘2 min’::interval |
?天前 | sysdate - ? | now()- ‘2 day’::interval |
几天前 | trunc(sysdate-1) | current_date - ‘1 day’::interval |
几月前 | add_month() | current_date + interval ‘-1 month’ |
now() - ( || ‘min’)::interval
now() - (? || ‘day’)::interval
7、NVL函数替换方案
oracle中的NVL(arg1, arg2)用来设置默认值,arg1为空就设置为arg2。
postgre中可以用coalesce(arg1, arg2)实现相同效果。
8、rownum实现方法或者pagehelper的实现
oracle中用rownum进行分页
postgre中用limit进行分页
9、数字类型字段模糊查询问题
非String类型的字段要进行模糊查询,需要先将数据库字段类型转成varchar,如下:
and cast(user_phone as varchar) LIKE ?
10、blob类型的问题
oracle中用blob类型可以存储文件,在java中也用blob类型对应。postgre与之对应的是bytea,在java中用byte[]数组对应就可以了。
11、to_date函数的问题:
postgre中to_date函数转出来的是不带时分秒的时间,如果想要带时分秒的,需要用to_timestamp。
12、存储过程创建的问题
13、pg_cron定时任务插件
PostgreSQL 实现定时任务
14、cast函数
15、批量插入 select 1 from dual
16、merge into
17、cast ('' as float) 转数字
18、创建自增主键 serial
19、to_char(,'fm999990') 转字符串