racle mysql 的常用函数的区别
group by,wmsys.wm_concat,group_concat:
oracle :
select yhid,yh,wmsys.wm_concat(mc) mc from dm group by yhid,yh
mysql :
select yhid,yhd,group_concat(mc) mc from dm group by yhd
group by:在mysql中:如果只根据一个列进行分组,则不管查询出多少列(除聚合函数外),group by后面跟一个列就OK了,但ORALCE中查询出多少
列,则GROUP BY 后面就要跟多少列,并且GROUP BY后面不允许跟别名,这导致了一个问题:
如果查询的列需要判断时,比如遇到大块的CASE WHEN 时,则GROUP BY后面也需要重复写一遍,导致SQL语句非常庞大。
eg:
sql = "
select sj.guid,sj.zid,sj.mc,sj.gdsj,wmsys.wm_concat(org.mc) bm,sj.kssj||'~'||sj.jssj ksjs,case when mod(sj.sxbbz,2)=0 then '上班' else '下班' end sxb
from t_kq_sjsz sj left join t_kq_sjsz_bm sj_bm on sj.zid=sj_bm.zid left join t_org_tree org on sj_bm.bmid=org.lxid
group by sj.guid,sj.zid,sj.mc,sj.gdsj,sj.kssj||'~'||sj.jssj,case when mod(sj.sxbbz,2)=0 then '上班' else '下班' end
";
列转化为行时:mysql为group_concat,对应的oracle 为:wmsys.wm_concat
CONCAT,“~”(字符串连接):
mysql :CONCAT
oralce:"~"
oracle 的日期处理:
oralce的日期格式为 dd-m月-yy hh24:mi:ss
mysql 中的为: yyyy-MM-dd HH:mm:ss
在ORALCE中:尽管用"SimpleDateFormat"类可以格式化为指定格式,但我试验了通过JdbcTemplate.update(sql),却不能插入成功不知道为什么!.不知道JDBC可以不?
mysql 中不存在此问题.
我的处理方法:
定义一个static 变量:
private static String strOralceTime = "to_date({0},'yyyy-mm-dd hh24:mi:ss')"
遇见时间变量,则String.replace({0},date);
group by,wmsys.wm_concat,group_concat:
oracle :
select yhid,yh,wmsys.wm_concat(mc) mc from dm group by yhid,yh
mysql :
select yhid,yhd,group_concat(mc) mc from dm group by yhd
group by:在mysql中:如果只根据一个列进行分组,则不管查询出多少列(除聚合函数外),group by后面跟一个列就OK了,但ORALCE中查询出多少
列,则GROUP BY 后面就要跟多少列,并且GROUP BY后面不允许跟别名,这导致了一个问题:
如果查询的列需要判断时,比如遇到大块的CASE WHEN 时,则GROUP BY后面也需要重复写一遍,导致SQL语句非常庞大。
eg:
sql = "
select sj.guid,sj.zid,sj.mc,sj.gdsj,wmsys.wm_concat(org.mc) bm,sj.kssj||'~'||sj.jssj ksjs,case when mod(sj.sxbbz,2)=0 then '上班' else '下班' end sxb
from t_kq_sjsz sj left join t_kq_sjsz_bm sj_bm on sj.zid=sj_bm.zid left join t_org_tree org on sj_bm.bmid=org.lxid
group by sj.guid,sj.zid,sj.mc,sj.gdsj,sj.kssj||'~'||sj.jssj,case when mod(sj.sxbbz,2)=0 then '上班' else '下班' end
";
列转化为行时:mysql为group_concat,对应的oracle 为:wmsys.wm_concat
CONCAT,“~”(字符串连接):
mysql :CONCAT
oralce:"~"
oracle 的日期处理:
oralce的日期格式为 dd-m月-yy hh24:mi:ss
mysql 中的为: yyyy-MM-dd HH:mm:ss
在ORALCE中:尽管用"SimpleDateFormat"类可以格式化为指定格式,但我试验了通过JdbcTemplate.update(sql),却不能插入成功不知道为什么!.不知道JDBC可以不?
mysql 中不存在此问题.
我的处理方法:
定义一个static 变量:
private static String strOralceTime = "to_date({0},'yyyy-mm-dd hh24:mi:ss')"
遇见时间变量,则String.replace({0},date);