MySQL與Oracle 差異比較-基本語法


1、 查詢行數自增1

Oracle:中select rownum ,  a.* from fdcom a

Mysql:

select @ROWNO := @ROWNO + 1 as rownum , a.*

  from (select shortname

          from fdcom

         where comtype='02' and comkind='02'

) a,(SELECT @ROWNO := 0) a1

 

2、 日期格式轉換

Oracle:  to_date(makedate,’yyyy-mm-dd’)

Mysql:  date_format(e.makedate,'%Y-%m-%d')

#轉換為月日

Oracle:select to_char(date'2016-11-1','mmdd') from dual

Mysql:select date_format(date('2016-11-1'),'%m%d') from dual

select date_format('2016-11-1','%m%d') from dual

#轉換為年

Oracle:select to_char(date'2016-11-1','YYYY') from dual

Mysql:select date_format('2016-11-1','%Y') from dual

 

3、 拼接字符

Oracle: ||

Mysql: 替換為concat(‘’,‘’)

4、 Oracle :nvl

Mysql:替換為ifnull()

5、 兩個日期時間計算

Oracle: select months_between(sysdate, departdate) from fadimission

mysql:  select timestampdiff(month,'2016-12-1','2016-9-1') from dual

6、數字格式轉換

Oracle:

select CAST(round(0.01,5)   AS   CHAR(6)) from dual

  mysql:

select cast(0.123 as decimal(5,4)) from dual

7、行數限制

Oracle:rownum=1

Mysql:limit 1 (可以直接where后,但是不能在直接and后)

8、有嵌套查詢,mysql最外層一定要加別名

select comcode

  from (select comcode from fdcom where comkind = '02') a

 where 1 = 1

 

9、mysql:delete 后需要加上from

10、settledate取日期范圍問題

Oracle:

select add_months(date'2017-4-11',-1-0+1) from dual

select last_day(add_months(date'2017-4-11',-0)) from dual

myqsql:

SELECT DATE_ADD('2017-04-11',INTERVAL 0 month) from dual

select last_day(date_add('2017-04-11',interval -0 month)) from  dual

11、

名問題:

 

增加紅色框中的內容可以解決別名的問題

12、connect by 的問題

   (1) connect by prior upcomcode=comcode  這種從下向上查的可以用程序替換,也可以用函數替換

程序參考: GetFHManageComLimit類中的方法parseUpManageComLimitlikeNew,查的是所有機構

Js方法參考:Agentcommon2.js的getBasicLawToComCode中的getSortListNew這個方法查的是comtype=03

從下向上查的還可以用方法:

select ComCode from FDCom where ComType = '03' connect by PRIOR UpComCode = ComCode start with ComCode =’’

限制了層級的可以select queryUpcomcode (comcode,comtype) from dual

沒有限制層級的queryComcodeNew(comcode)查的是包含comcode及各層上級編碼

(2) connect by prior comcode = upcomcode 從上往下查

可以直接 incomcode like concat((select incomcode from fdcom where commcode =’’),’%’)

同樣的保險公司從下向上查滿足某個層級的用select  queryINSSuperCode(suppliercode, insclass) from dual

13、oracle :decode

   Mysqsl:轉換為case 。when 。end

14:oracle:sysdate

   Mysql:sysdate()

15:查代理人上級主管

connect by PRIOR UpAgent=AgentCode

用queryUpagent方法

 

MySQLOracle 差異比較之二基本語法

 

http://www.cnblogs.com/HondaHsu/p/3641183.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM