91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL與Oracle的sql區別有哪些

發布時間:2021-11-08 14:20:45 來源:億速云 閱讀:370 作者:iii 欄目:關系型數據庫

本篇內容介紹了“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區別有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

六盘水市| 肇庆市| 定结县| 井陉县| 渭源县| 新密市| 五寨县| 得荣县| 鄂州市| 满洲里市| 县级市| 甘孜县| 杭州市| 武隆县| 桃园县| 通河县| 绍兴市| 年辖:市辖区| 墨竹工卡县| 崇礼县| 乌兰浩特市| 桓台县| 宣恩县| 尉氏县| 莱州市| 襄垣县| 浙江省| SHOW| 南郑县| 轮台县| 武鸣县| 太湖县| 宁河县| 南阳市| 东丰县| 潼关县| 樟树市| 平罗县| 峡江县| 连平县| 潞城市|