数据库差异
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后面。
