PostgreSQL與Oracle的sql差異
1.rownum
(1)Oracle分頁查詢使用rownum,PostgreSQL使用limit offset
Oracle | PostgreSQL |
---|---|
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
Oracle | PostgreSQL |
---|---|
select * from emp where rownum = 1; | select * from emp limit 1; |
(3)Oracle中序號列rownum,PostgreSQL使用視窗函式
Oracle | PostgreSQL |
---|---|
select rownum,t.* from emp t; | select row_number() over(), t.* from emp t; |
2.系統日期
Oracle | PostgreSQL |
---|---|
SYSDATE | current_timestamp, current_date |
3.delete語句
Oracle delete語句可以沒有from,pg必須要有from
Oracle | PostgreSQL |
---|---|
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
Oracle | PostgreSQL |
---|---|
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的欄位不能有別名
Oracle | PostgreSQL |
---|---|
update emp t set t.name = ‘xxx’ where t.empno = 2 | update emp set name = ‘xxx’ where empno = 2 |
9. 日期相減
oracle日期相減自動轉換為數字,結果為相差的天數。
pg日期相減為interval型別,得到相差天數需要進行型別轉換
10.遞迴查詢中的level
oracle的遞迴查詢中level表示查詢深度(或者遞迴層次),在PG中沒有此含義的關鍵字,需要自行在with recursive實現
Oracle | PostgreSQL |
---|---|
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.序列的呼叫
Oracle | PostgreSQL |
---|---|
select seqname.nextval from dual; | select nextval(‘seqname’) |
12.外連線
Oralce外連線支援使用 (+), PostgreSQL需使用left jion或者right join標準sql語法
13.distinct去重複
oracle支援unique關鍵字去重複,pg中只能使用distinct
14.字串分割
Oracle | PostgreSQL |
---|---|
listagg | string_agg |
15.集合相減
Oracle | PostgreSQL |
---|---|
Minus | except |
16.null與”
null和’’在oracle中是一致的,最終都會儲存為null,在PG中會進行區分
17.不等於
Oracle中 ! =,< >操作符中間允許有空格,PG中不可以
18.別名
PG中無效的別名,可以嘗試加as關鍵字,例如name
19.正規表示式
Oracle | PostgreSQL |
---|---|
SELECT REGEXP_SUBSTR(‘17,20,23’,’[^,]+’,1,1,’i’) FROM DUAL; | select (regexp_matches(‘17,20,23’, ‘[^,]+’))[1] |
20.欄位大小寫
oracle欄位名大寫,PG欄位名小寫
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956102/viewspace-2666880/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- openGauss資料與PostgreSQL的差異對比SQL
- Oracle與GreatSQL差異:更改唯一索引列OracleSQL索引
- Oracle中exists和in的效能差異Oracle
- TiDB與MySQL的SQL差異及執行計劃簡析TiDBMySql
- SQL Server 2017 各版本之間的差異SQLServer
- 【譯】框架與庫的差異框架
- 談談 mysql和oracle的使用感受 -- 差異MySqlOracle
- 不同資料庫SQL語法差異資料庫SQL
- 思科1500與3600差異
- MySQL和PostgreSQL在多表連線演算法上的差異MySql演算法
- 【SQL】SQL表連線方法方式介紹(Oracle/Postgresql)SQLOracle
- 軟體測試:SVN與Git的差異Git
- dblink的關聯與本地關聯差異
- oracle 12c 針對cdb的差異0備與對pdb進行恢復Oracle
- PostgreSQL、Oracle/MySQL和SQL Server的MVCC實現原理方式OracleMySqlServerMVC
- Python 與 JavaScript 語法差異點PythonJavaScript
- 反向代理與正向代理差異分析
- Scala與Java差異(五)之Map與TupleJava
- java字串“==”與“equals”的差異及與c#的區別Java字串C#
- 資料專案與erp專案的差異
- 深入sql多表差異化聯合查詢的問題詳解SQL
- Golang 針對 MySQL 資料庫表結構的差異 SQL 工具GolangMySql資料庫
- Scala與Java差異(三)之函式Java函式
- oracle與infomix異同點Oracle
- Oracle vs PostgreSQL Develop(23) - PL(pg)sql(引數宣告)OracleSQLdev
- 【譯】 React官方:函式元件與類元件的差異 ?React函式元件
- Python與其它程式語言的差異化總結Python
- 詳解爬蟲與RPA的工作原理和差異爬蟲
- rpm 與 原始碼安裝的一些差異原始碼
- ES6模組與commonJS模組的差異JS
- vue2與vue3的差異(總結)?Vue
- UDP和TCP的差異UDPTCP
- 線上json差異比較工具--遞迴比較兩個json的節點和值的差異,並支援差異數預覽和逐個檢視差異JSON遞迴
- 差異化與中心化,QQ小遊戲的機遇中心化遊戲
- 從原理開始分析全息投影與幻影成像的差異
- 為什麼RGB 與 CMYK的差異,會有所不同?
- 人與人的差異,是先天還是後天形成的?
- EDBPPAS(Oracle相容版)Oracle與PostgreSQL相容模式的引數配置切換OracleSQL模式