oracle,mysql常用函数的区别

raclemysql的常用函数的区别

groupby,wmsys.wm_concat,group_concat:

oracle:

selectyhid,yh,wmsys.wm_concat(mc)mcfromdmgroupbyyhid,yh

mysql:

selectyhid,yhd,group_concat(mc)mcfromdmgroupbyyhd

groupby:在mysql中:如果只根据一个列进行分组,则不管查询出多少列(除聚合函数外),groupby后面跟一个列就OK了,但ORALCE中查询出多少

列,则GROUPBY后面就要跟多少列,并且GROUPBY后面不允许跟别名,这导致了一个问题:

如果查询的列需要判断时,比如遇到大块的CASEWHEN时,则GROUPBY后面也需要重复写一遍,导致SQL语句非常庞大。

eg:

sql="

selectsj.guid,sj.zid,sj.mc,sj.gdsj,wmsys.wm_concat(org.mc)bm,sj.kssj||'~'||sj.jssjksjs,casewhenmod(sj.sxbbz,2)=0then'上班'else'下班'endsxb

fromt_kq_sjszsjleftjoint_kq_sjsz_bmsj_bmonsj.zid=sj_bm.zidleftjoint_org_treeorgonsj_bm.bmid=org.lxid

groupbysj.guid,sj.zid,sj.mc,sj.gdsj,sj.kssj||'~'||sj.jssj,casewhenmod(sj.sxbbz,2)=0then'上班'else'下班'end

";

列转化为行时:mysql为group_concat,对应的oracle为:wmsys.wm_concat

CONCAT,“~”(字符串连接):

mysql:CONCAT

oralce:"~"

oracle的日期处理:

oralce的日期格式为dd-m月-yyhh24:mi:ss

mysql中的为:yyyy-MM-ddHH:mm:ss

在ORALCE中:尽管用"SimpleDateFormat"类可以格式化为指定格式,但我试验了通过JdbcTemplate.update(sql),却不能插入成功不知道为什么!.不知道JDBC可以不?

mysql中不存在此问题.

我的处理方法:

定义一个static变量:

privatestaticStringstrOralceTime="to_date({0},'yyyy-mm-ddhh24:mi:ss')"

遇见时间变量,则String.replace({0},date);

相关推荐