千家信息网

PostgreSQL与Oracle的sql区别有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"PostgreSQL与Oracle的sql区别有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,
千家信息网最后更新 2026年11月02日PostgreSQL与Oracle的sql区别有哪些

本篇内容介绍了"PostgreSQL与Oracle的sql区别有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.rownum

(1)Oracle分页查询使用rownum,PostgreSQL使用limit offset
OraclePostgreSQL
select * from (select rownum r,e.* from emp e where rownum <=5) t where r>0;select * from emp limit 5 offset 0;
(2)Oracle中rownum=1,PostgreSQL中使用limit 1
OraclePostgreSQL
select * from emp where rownum = 1;select * from emp limit 1;
(3)Oracle中序号列rownum,PostgreSQL使用窗口函数
OraclePostgreSQL
select rownum,t.* from emp t;select row_number() over(), t.* from emp t;

2.系统日期

OraclePostgreSQL
SYSDATEcurrent_timestamp, current_date

3.delete语句

Oracle delete语句可以没有from,pg必须要有from

OraclePostgreSQL
delete from emp where empno = xxx;
delete emp where empno = xxx
delete from emp where empno = xxx

4.类型自动转换

Oracle支持类型自动转换,例如数字自动换换为字符串等;PG中需要显示转换,或者添加CAST

5.子查询别名

PostgreSQL在from关键字后的子查询必须要有别名,Oralce可以没有。

6. group by having

PG having语句必须在group by之后,oracle可以在group by之前

7.递归查询

Oracle中使用start with … connect by…, PG中使用with recusive

OraclePostgreSQL
select *
from larearrelation
where rearedgens = 1
and rearflag = 1
and rearlevel = '01'
connect by prior agentcode = rearagentcode
start with rearagentcode = '10032226';
with recursive rs as (
select * from larearrelation where rearagentcode = '10032226'
union all
select a. from larearrelation a, rs where a.rearagentcode = rs.agentcode
)
select * from rs where rearedgens = 1 and rearflag = '1' and rearlevel = '01'

8.update语句别名

postgresql中update语句时,set的字段不能有别名

OraclePostgreSQL
update emp t set t.name = 'xxx' where t.empno = 2update emp set name = 'xxx' where empno = 2

9. 日期相减

oracle日期相减自动转换为数字,结果为相差的天数。
pg日期相减为interval类型,得到相差天数需要进行类型转换

10.递归查询中的level

oracle的递归查询中level表示查询深度(或者递归层次),在PG中没有此含义的关键字,需要自行在with recursive实现

OraclePostgreSQL
select max(level) from larearrelation
where rearedgens = 1
and rearflag = 1
and rearlevel = '01'
connect by prior agentcode = rearagentcode
start with rearagentcode = '10032226';
with recursive rs as (
select larearrelation., 1 depth from larearrelation where rearagentcode = '10032226'
union all
select a./*, rs.depth + 1 depth from larearrelation a, rs where a.rearagentcode = rs.agentcode
)
select max(rs.depth) from rs where rearedgens = 1 and rearflag = '1' and rearlevel = '01'

11.序列的调用

OraclePostgreSQL
select seqname.nextval from dual;select nextval('seqname')

12.外连接

Oralce外连接支持使用 (+), PostgreSQL需使用left jion或者right join标准sql语法

13.distinct去重复

oracle支持unique关键字去重复,pg中只能使用distinct

14.字符串分割

OraclePostgreSQL
listaggstring_agg

15.集合相减

OraclePostgreSQL
Minusexcept

16.null与"

null和''在oracle中是一致的,最终都会存储为null,在PG中会进行区分

17.不等于

Oracle中 ! =,< >操作符中间允许有空格,PG中不可以

18.别名

PG中无效的别名,可以尝试加as关键字,例如name

19.正则表达式

OraclePostgreSQL
SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') FROM DUAL;select (regexp_matches('17,20,23', '[^,]+'))[1]

20.字段大小写

oracle字段名大写,PG字段名小写

"PostgreSQL与Oracle的sql区别有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

查询 别名 语句 关键 关键字 字段 日期 类型 递归 支持 内容 天数 字符 字符串 数字 更多 知识 实用 一致 学有所成 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海卓越科技互联网 重庆互联网络科技 互联网未来科技 互联网金融科技创新 睿民互联网科技 郑州华宇互联网科技 大白互联网科技 互联网科技咨询 佰商互联网科技有限公司 宁夏众和广鑫互联网科技有限公司 互联网金融中的现代科技 黑科技闪耀互联网之光 注册互联网科技公司经营范围大全 互联网科技研发水平 爱医互联网络科技 互联网科技资金流入 陕西九四连强互联网科技有限公司 广东猫王互联网科技有限公司电话 互联网大会出现的黑科技 恒生科技互联网指数十大成分股 喔噻互联网科技 互联网科技论坛 互联网科技宣传片 贵州叶脉互联网科技有限公司所属行业 青岛科技大学互联网大赛研究生 新兴科技互联网创新大赛颁奖典礼 深圳艾果互联网通讯科技 济南小医互联网科技有限公司招聘 昆明中奇联合互联网科技 北京互联网科技类企业分布
0