本篇內容介紹了“PostgreSQL與Oracle的sql區(qū)別有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
為陽朔等地區(qū)用戶提供了全套網頁設計制作服務,及陽朔網站建設行業(yè)解決方案。主營業(yè)務為成都網站建設、網站建設、陽朔網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
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; |
Oracle | PostgreSQL |
---|---|
select * from emp where rownum = 1; | select * from emp limit 1; |
Oracle | PostgreSQL |
---|---|
select rownum,t.* from emp t; | select row_number() over(), t.* from emp t; |
Oracle | PostgreSQL |
---|---|
SYSDATE | current_timestamp, current_date |
Oracle delete語句可以沒有from,pg必須要有from
Oracle | PostgreSQL |
---|---|
delete from emp where empno = xxx;
delete emp where empno = xxx | delete from emp where empno = xxx |
Oracle支持類型自動轉換,例如數字自動換換為字符串等;PG中需要顯示轉換,或者添加CAST
PostgreSQL在from關鍵字后的子查詢必須要有別名,Oralce可以沒有。
PG having語句必須在group by之后,oracle可以在group by之前
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’ |
postgresql中update語句時,set的字段不能有別名
Oracle | PostgreSQL |
---|---|
update emp t set t.name = ‘xxx’ where t.empno = 2 | update emp set name = ‘xxx’ where empno = 2 |
oracle日期相減自動轉換為數字,結果為相差的天數。
pg日期相減為interval類型,得到相差天數需要進行類型轉換
oracle的遞歸查詢中l(wèi)evel表示查詢深度(或者遞歸層次),在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’ |
Oracle | PostgreSQL |
---|---|
select seqname.nextval from dual; | select nextval(‘seqname’) |
Oralce外連接支持使用 (+), PostgreSQL需使用left jion或者right join標準sql語法
oracle支持unique關鍵字去重復,pg中只能使用distinct
Oracle | PostgreSQL |
---|---|
listagg | string_agg |
Oracle | PostgreSQL |
---|---|
Minus | except |
null和’’在oracle中是一致的,最終都會存儲為null,在PG中會進行區(qū)分
Oracle中 ! =,< >操作符中間允許有空格,PG中不可以
PG中無效的別名,可以嘗試加as關鍵字,例如name
Oracle | PostgreSQL |
---|---|
SELECT REGEXP_SUBSTR(‘17,20,23’,’[^,]+’,1,1,’i’) FROM DUAL; | select (regexp_matches(‘17,20,23’, ‘[^,]+’))[1] |
oracle字段名大寫,PG字段名小寫
“PostgreSQL與Oracle的sql區(qū)別有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯網站,小編將為大家輸出更多高質量的實用文章!
文章名稱:PostgreSQL與Oracle的sql區(qū)別有哪些
網頁鏈接:http://jinyejixie.com/article46/pgsphg.html
成都網站建設公司_創(chuàng)新互聯,為您提供動態(tài)網站、網站導航、企業(yè)網站制作、云服務器、建站公司、定制開發(fā)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯