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方法

猜你喜欢

转载自blog.csdn.net/zhuralll112/article/details/86292938
今日推荐