insert into DCLLJOBINFO (JOBID, JOBNAME, FIRSTRUN, LASTRUNBEGIN, LASTRUNEND, RUNCOUNT) values ('4', 'group-FileIsDealRmonColl_1.FileIsDealRmonColl_1-job-4', to_DATE ('21-07-2011 14:09:20', 'dd-mm-yyyy hh24:mi:ss'), to_DATE ('09-01-2012 16:06:09', 'dd-mm-yyyy hh24:mi:ss '), to_DATE ('09-01-2012 16:06:11', 'dd-mm-yyyy hh24:mi:ss'), 12112);
yyyy-mm-dd
mysql
str_to_date ('2008-4-2 15:3:28',' %Y-%m-%d %H:%i:%s ');
insert into DCLLJOBINFO (JOBID, JOBNAME, FIRSTRUN, LASTRUNBEGIN, LASTRUNEND, RUNCOUNT) values ('4', 'group-FileIsDealRmonColl_1.FileIsDealRmonColl_1-job-4', str_to_date ('21-07-2011 14:09:20', '%d-%m-%Y %H:%i:%s'), str_to_date ('09-01-2012 16:06:09', '%d-%m-%Y %H:%i:%s'), str_to_date ('09-01-2012 16:06:11', '%d-%m-%Y %H:%i:%s'), 12670);
%Y-%m-%d %H:%i:%s
to_CHAR (generant_time, '%m/%d') DATE_FORMAT(generant_time, '%m/%d')
to_CHAR ( ENABLE ) enable 为int型 concat(ENABLE,'')
建视图时的子查询问题
select * from aa as a,(select id from bb) as b where a.id=b.id
mysql
将子查询先建成一个视图,然后再建立视图进行关联
CREATE VIEW View_bb as select id from bb;
select a.* from aa a inner join View_bb b on a.id=b.id
http://blog.csdn.net/lele2426/article/details/7519559
截取字符串
SUBSTR (unit_id, 0 , 5 ) 改为 SUBSTRING (unit_id, 1, 5)
generant_time > SYSDATE - 8 改为 WHERE generant_time > now() - interval 8 day
注释:日期直接加减的含义不同了,比如Oracle中sysdate + 1 变成了sysdate() + interval 1 day(注意如果写成sysdate() + 1 语法还是正确的,但含义是错误的)
数据类型的替换
date----datetime number----int varchar2-------varchar
mysql中如何标记主外表( http://hi.baidu.com/thinkinginlamp/blog/item/ac488618104447be4aedbcfe.html )
oracle中的 nvl() 方法 在mysql中用 IFNULL() 替换
如果你某个字段为空,但是你想让这个字段显示0
nvl(字段名,0),就是当你选出来的时候,这个字段虽然为空,但是显示的是0,当然这个0也可以换成其他东西,如:1,2,3……
oracle中的 decode() 函数 在mysql中用case ...when....then....when...then...end
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary*1.15) from employee 是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else
SELECT DECODE (SUBSTRING(TB1.UNIT_ID,0,5),'10-10','主机','10-11','数据库','10-12','中间件','10-13','网络设备') NAME
SELECT ( case SUBSTR(TB1.UNIT_ID, 1, 5) when '10-10' then '主机' when '10-11' then '数据库' when '10-12' then '中间件' when '10-13' then '网络设备' end ) NAME
orcale中的主外表,在mysql中如何标记
SELECT DECODE(SUBSTRING(TB1.UNIT_ID,0,5),'10-10','主机','10-11','数据库','10-12','中间件','10-13','网络设备') NAME,"
+ " TB1.UNIT_ID, TB1.STEPSUM, IFNULL(TB2.STEP1,0) STEP1 ,IFNULL(TB3.STEP1,0) STEP2,IFNULL(TB4.STEP1,0) STEP3, (TB1.STEPSUM-(IFNULL(TB2.STEP1,0))-(IFNULL(TB3.STEP1,0))-(IFNULL(TB4.STEP1,0))) step4 "
+ " FROM (SELECT substring(KBP_CLASS,0,5) UNIT_ID, COUNT (*) STEPSUM FROM V_ASSET_ALL WHERE KBP_CLASS LIKE '10-%' GROUP BY substring(KBP_CLASS,0,5)) TB1, "
+ " ("
+ getPTEventClass("1")
+ ") TB2,("
+ getPTEventClass("2")
+ ") TB3, ("
+ getPTEventClass("3")
+ ") TB4 " + " WHERE TB1.UNIT_ID = TB2.UNIT_ID( + ) AND TB1.UNIT_ID = TB3.UNIT_ID( + ) AND TB1.UNIT_ID = TB4.UNIT_ID (+ ) ORDER BY UNIT_ID
改为
SELECT (case SUBSTR(TB1.UNIT_ID, 1, 5) when '10-10' then '主机' when '10-11' then '数据库' when '10-12' then '中间件' when '10-13' then '网络设备' end) NAME,"
+ " TB1.UNIT_ID, TB1.STEPSUM, IFNULL(TB2.STEP1,0) STEP1 ,IFNULL(TB3.STEP1,0) STEP2,IFNULL(TB4.STEP1,0) STEP3, (TB1.STEPSUM-(IFNULL(TB2.STEP1,0))-(IFNULL(TB3.STEP1,0))-(IFNULL(TB4.STEP1,0))) step4 "
+ " FROM (SELECT SUBSTR(KBP_CLASS,1,5) UNIT_ID, COUNT(*) STEPSUM FROM V_ASSET_ALL WHERE KBP_CLASS LIKE '10-%' GROUP BY SUBSTR(KBP_CLASS,1,5)) TB1 "
+ " left outer join ("
+ getPTEventClass("1")
+ ") TB2 on TB1.UNIT_ID = TB2.UNIT_ID left outer join ("
+ getPTEventClass("2")
+ ") TB3 on TB1.UNIT_ID = TB3.UNIT_ID left outer join ("
+ getPTEventClass("3")
+ ") TB4 on TB1.UNIT_ID = TB4.UNIT_ID " + " ORDER BY UNIT_ID
oracle中的 replace() 函数 replace('将要更改的字符串','被替换掉的字符串','替换字符串')
oracle中的 | | 是连接符
如 TB2.UNIT_ID LIKE REPLACE (TB1.UNIT_ID, ':', '%') || '%' 将 REPLACE (TB1.UNIT_ID, ':', '%')与%连接起来
mysqle中代替oracle中的连接符 TB2.UNIT_ID LIKE concat (REPLACE (TB1.UNIT_ID, ':', '%') ,'%')
注意:oracle函数与()之间可以有空格,mysql不能有
oracle中的 rownum rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2, 依此类推,这个伪字段可以用于限制查询返回的总行数
在mysql中没有伪字段
当mysql中需要查询伪字段时 (如序号)
mysql> SELECT * FROM frutas;
+-----------+----------+
| nombre | color |
+-----------+----------+
| fresa | rojo |
| platano | amarillo |
| manzana | verde |
| uva | verde |
| pera | verde |
| mandarina | naranja |
| melocoton | marron |
| limon | amarillo |
+-----------+----------+
8 rows in set (0,00 sec)
SELECT @rownum:=@rownum+1 AS rownum , frutas.*
FROM (SELECT @rownum:=0) r , frutas;
mysql> SELECT @rownum:=@rownum+1 AS rownum, frutas.*
-> FROM (SELECT @rownum:=0) r, frutas;
+--------+-----------+----------+
| rownum | nombre | color |
+--------+-----------+----------+
| 1 | fresa | rojo |
| 2 | platano | amarillo |
| 3 | manzana | verde |
| 4 | uva | verde |
| 5 | pera | verde |
| 6 | mandarina | naranja |
| 7 | melocoton | marron |
| 8 | limon | amarillo |
+--------+-----------+----------+
8 rows in set (0,00 sec)
但是如何把这个查询放在 create view 里面
mysql> CREATE VIEW vw_frutas AS SELECT @rownum:=@rownum+1 AS rownum, frutas.*
-> FROM (SELECT @rownum:=0) r, frutas;
ERROR 1351 (HY000): View's SELECT contains a variable or parameter
oracle中的 TO_NUMBER() 函数 将char型改为number型
mysql中用cast()代替
如:TO_NUMBER(PARENT_ID)
cast(PARENT_ID as SIGNED INTEGER)
oracle中的 String(number, character) number 必要参数;Long。返回的字符串长度。如果 number 包含 Null,将返回 Null。
character 必要参数;Variant。为指定字符的字符码或字符串表达式,其第一个字符将用于建立返回的字符串。如果 character 包含 Null,就会返回 Null
oracle中的 分页 mySql = this.getLimitString(mySqlCount, this.pagination);
mysql中的分页 mySql = mySqlCount + " limit " +pagination.getFirstRownum()+","+pagination.getPageSize();
Oracle中 start with...connect by prior 子句用法 connect by 是结构化查询中用到的,其基本语法是:
select ... from tablename start with 条件1
connect by 条件2
where 条件3;
例:
select * from table
start with org_id = 'HBHqfWGWPy'
connect by prior org_id = parent_id;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
org_id,parent_id那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
条件2 是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。
条件3 是过滤条件,用于对返回的所有记录进行过滤。
mysql 实现oracle start with connect by递归 http://blog.sina.com.cn/s/blog_8317516b0100v4nf.html
mysql中的find_in_set:
方法1---SELECT * FROM jiu WHERE `jiu` like 1%; (用like的方法实现)
方法2---SELECT * FROM jiu WHERE FIND_IN_SET('1','jiu');
oracle中取前几行数据 rownum <=10
mysql中用LIMIT 0,10(10是返回最大行数)
KBP_CLASS(unit_id.split( ":" )[0]) unit_id用:分割取第一列为 KBP_CLASS
mysql中的delet不支持别名
mysql中的delete语句不支持起别名
mysql中的 delete from 表名 where 。。。 中的from不能省去,oracle中可以省去
mysql中的Insert语句不支持插入的项中先查询再插入 解决办法
http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631050843a4113dc3b6780c7150884cd15c6735b364065b2fd7a3510738298237a05a44356f7f53372350324a3de95c81cd2e4d9696cd630340147da0045935fb8cb376e9c67875a98fe4abbadf043d5b9d2a29e16049b08513197f0fa1c53549f38b6033192e0ca184b0807ba9c27658e4e7659d97357b737eee7467906f1b7961d5bc25ac7666580ae45f26055e004a56f5e7314b74dc11f565227e13f67b9046a5385eb2cf02a085722c61ceef9d6b69a0fce8ab977&p=9e759a46d0c417fc57e6d23a135989&user=baidu&fm=sc&query=mysql+INSERT+You+can%27t+specify+target+table+%27TB%5FSYS%5FPLUGWEB%5FRTREE%27+for+update+in+FROM+cla&qid=8b70fbba4801eaf3&p1=6
ORACLE中 SELECT MAX ( ID )+ 1 AS ID FROM SJDBCMANAGER 若相同方式写入mysql,mysql会是小数,oracle会是整数
如想mysql与oracle一样 改为SELECT round (MAX(ID)+1) AS ID FROM SJDBCMANAGER
或者 SELECT cast (MAX(ID) as unsigned int )+1 as ID FROM SJDBCMANAGER
oracle中 minus 两个关联表的符合条件记录的交集,是于union作用相反.
oracle改造mysql主要改造点
原创
©著作权归作者所有:来自51CTO博客作者shaotao_nefu的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:JDBC连接数据库
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
走在前、做示范,苏州农商银行携华为云完成超级网银系统改造
苏州农商银行基于GaussDB数据库,对核心业务系统“超级网银”进行了全面改造升级,极大提升了系统的稳定性和安全性。
数据库 网银 高可用 GaussDB数据库 -
spring架构改造持续改造
spring项目改造
java Powered by 金山文档 spring sed