数据库差异
1.函数
描述 | PostgreSQL | Oracle |
当前时间 | current_date,now() | sysdate |
日期格式化 | to_date(text, text) | to_date(text) |
对时间或者数字截取 | date_trunc() | trunc() |
空判断 | coalesce(a, 0) | nvl(a, 0) |
数值类型转换 | to_number(int, text) 例: to_number(123, "666666") : text表示精度 |
to_number(int) |
字符类型转换 | to_char(int, text) 例如 to_char(123,"666666") : text表示精度 | to_char(int) |
条件判断 | case...when...then | decode() |
伪表dual | 不支持 | 支持 |
2.数据类型
|
Oracle |
PGSQL |
整数类型 |
integer |
smallint |
integer |
||
bigint |
||
数字类型 |
decimal(P,S) |
decimal |
number(P,S) |
numeric |
|
number(18,2) |
money |
|
可变长度的字符串 |
varchar2 |
character varying(n), varchar(n) |
varchar2(1) |
boolean |
|
固定长度的字符串 |
char |
character(n), char(n) |
日期类型 |
date |
timestamp [ (p) ] [ without time zone ] |
timestamp |
timestamp [ (p) ] with time zone |
|
|
date |
|
|
time [ (p) ] [ without time zone ] |
|
|
time [ (p) ] with time zone |
|
|
interval [ fields ] [ (p) ] |
|
字符数据 |
clob |
text |
3.表连接(左连接,右连接)
oracle: 左连接 : a.id = b.id(+) ;
右连接 : a.id(+) = b.id
postgreSQL: 左连接:a left join b on a.id = b.id;
右连接:a right join b on a.id = b.id
3.分页
oracle使用rownum分页, postgreSQL使用limit.
注意:PostGreSQL数据分页是利用limit关键字 的,搭配子查询,
PostGreSQL的子查询相比较Oracle而言更严格,必须使用别名,
Limit放在order by后面。