千家信息网

PostgreSQL与Oracle的sql区别有哪些

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,本篇内容介绍了"PostgreSQL与Oracle的sql区别有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,
千家信息网最后更新 2025年11月13日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安全错误 数据库的锁怎样保障安全 吉林正规软件开发服务标准 定制软件开发工程师待遇 数据库中的四种备份 抓取一个网站上的数据库 软件开发小组学期总结 敦煌市公安局网络安全 app软件开发的优点和缺点 山东商业软件开发单价 教育部学生网络安全手抄报 大兴区制造软件开发操作 网络安全协议需要签订吗 金蝶提示网络加密服务器 河北网络技术服务什么价格 镇乡网络安全检查总结报告 医保医疗器械数据库 教育软件开发都有什么软件 网络安全产品方案总结 电气工程 服务器硬件架设 广电网络安全播出演练预案 计算机网络技术专业词汇 数据库应用怎样设置有重复索引 dell霄龙服务器在哪里买 上海科技产业互联网 江苏南通网络安全吗 游戏服务器和手机哪个好 彩票过滤选号软件开发 软件开发运维管理软件 40岁软件开发换工作 服务器如何打开安全规则端口 聪汇深圳互联网科技有限公司
0