oracle和mysql的學習

Oracle和mysql的部分語法區別mysql

1、WM_CONCAT對應GROUP_CONCAT;sql

2、 ronum可用limit代替;oracle

3、sys_guid()用uuid()代替app

4、add_months(t2.maxTime,-12)用date_add(t2.maxTime,interval -12 month)代替;函數

  date_format(date,'%Y-%m-%d')-->oracle中的to_char();ui

  str_to_date(date,'%Y-%m-%d')-->oracle中的to_date();spa

  %Y:表明4位的年份code

  %y:表明2爲的年份orm

  %m:表明月, 格式爲(01……12)xml

  %c:表明月, 格式爲(1……12)

  %d:表明月份中的天數,格式爲(00……31)

  %e:表明月份中的天數, 格式爲(0……31)

  %H:表明小時,格式爲(00……23)

  %k:表明 小時,格式爲(0……23)

  %h: 表明小時,格式爲(01……12)

  %I: 表明小時,格式爲(01……12)

  %l :表明小時,格式爲(1……12)

  %i: 表明分鐘, 格式爲(00……59)

  %r:表明 時間,格式爲12 小時(hh:mm:ss [AP]M)

  %T:表明 時間,格式爲24 小時(hh:mm:ss)

  %S:表明 秒,格式爲(00……59)

  %s:表明 秒,格式爲(00……59)

例子:

select case when add_months(t2.maxTime,-12)>t1.minTime then to_char(add_months(t2.maxTime,-12),'yyyy-MM') else to_char(t1.minTime,'yyyy-MM') end as startTime,to_char(t2.maxTime,'yyyy-MM') as endTime from(select min(t.log_time) as minTime from t_lm_operlog t) t1,(select max(t.log_time) as maxTime from t_lm_operlog t)t2

轉爲:

select case when date_add(t2.maxTime,interval -12 month)>t1.minTime then date_format(date_add(t2.maxTime,interval -12 month),'%Y-%m') else date_format(t1.minTime,'%Y-%m') end as startTime,date_format(t2.maxTime,'%Y-%m') as endTime from(select min(t.log_time) as minTime from t_lm_operlog t) t1,(select max(t.log_time) as maxTime from t_lm_operlog t)t2

5、oracle中:to_char(number)把number轉成varchar2,在mysql中用concat(number)

6、oracle中:to_number在mysql中能夠用cast或者convert 

7、Oracle中記錄行號用Rownum RN;

  在mysql中:Select UID,(@rowNum:=@rowNum+1) as rowNo From a,(Select (@rowNum :=0) ) b Order by a.Money Desc;

8、SmRappfucauthEntityMapper.xml中的insert:merge into 

9、Oracle中:to_date(#{createtime ,jdbcType=VARCHAR },'yyyy-MM-dd hh24:mi:ss')

  Mysql中:  str_to_date(#{createtime ,jdbcType=VARCHAR },'%Y-%m-%d %T')

10、 Oracle中有遞歸:start with ...connect by prior;

  在mysql中沒有寫個方法,但能夠用函數來實現mysql遞歸;

例如:

  Oracle遞歸:

    select s.sysfuncid from T_SM_SYSFUNC s where s.sysfuncid!=t.sysfuncid start with s.sysfuncid = t.sysfuncid connect by prior s.sysfunccode=s.psysfuncid

  Mysql遞歸:

    select s.sysfuncid from T_SM_SYSFUNC s where s.sysfuncid!=t.sysfuncid and FIND_IN_SET(s.sysfuncid,FOO3(t.sysfuncid))

相關文章
相關標籤/搜索