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);