您的位置:首页 > 数据库 > Oracle

oracle项目移植MySQL几点体会

2009-04-08 22:51 302 查看
1、有些数据类型不一致。oracle中的date对应MysQL的DATETIME,对Oracle大的字符,MySQL没有varchar2,只有varchar;对多个字符varchar2(1000)对应MySQL中text等类型,

2、发现插入不了数据,分析程序,发现原来Oracle中插入时间是比较特殊:

to_date('"
+ DateUtil.formatTimestamp( ts ) + "', 'YYYY-MM-DD HH24:MI:SS'),

在MySQL则直接为 DateUtil.formatTimestamp( ts )就行了。不用to_date函数。

Oracle提供了一个非常好用的关键字rownum,可以限制结果集的大小。
MySQL也提供了相同a的功能,写法略有差别。

3、在Oracle表的别名是不能为as的,而MySQL则一定要有带as

4、oracle中的rownum相当于MySQL中的LimitSelect clause
[LIMIT [offset,] rows]

In Oracle
select * from table1 where rownum <= 2;

In MySQL
select * from table1 limit 0,2;
or
select * from table1 limit 2;

Usage:

我把如下的Oracle 的SQL语句成功改为MySQL的

Oracle的:

String sql = "SELECT a.articleid, a.title, a.content, a.pubdate, a.userid, a.hostip, u.nickname "
+ " FROM ( "
+ " SELECT articleid "
+ " FROM ( "
+ " SELECT articleid, rownum num "
+ " FROM ( "
+ " SELECT articleid "
+ " FROM article a "
+ " WHERE a.articleid=a.farticleid "
+ " ORDER BY pubdate desc "
+ " ) "
+ " ) "
+ " WHERE num <= " + (start + length) + " AND num > " + start
+ " ) b, article a, userinfo u "
+ " WHERE b.articleid = a.articleid AND a.userid = u.userid ";

移植到MySQL则为:

String sql = "SELECT a.articleid, a.title, a.content, a.pubdate, a.userid, a.hostip, u.nickname "
+ " FROM ( "
+ " SELECT articleid "
+ " FROM article as a "
+ " WHERE a.articleid=a.farticleid "
+ " ORDER BY pubdate desc "
+"limit " + start+","+(start + length)
+ " )as b, article as a, userinfo as u "
+ " WHERE b.articleid = a.articleid AND a.userid = u.userid ";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: