数据类型差异
Oracle 中的 DATE 类型对应 MySQL 的 DATETIME。对于大字符,MySQL 没有 VARCHAR2,只有 VARCHAR;多个字符 VARCHAR2(1000) 对应 MySQL 中的 TEXT 等类型。
日期函数处理
发现插入不了数据时,分析程序发现 Oracle 中插入时间比较特殊:
TO_DATE(DateUtil.formatTimestamp(ts), 'YYYY-MM-DD HH24:MI:SS')
在 MySQL 则直接为 DateUtil.formatTimestamp(ts) 即可,不需要 TO_DATE 函数。
分页语法差异
Oracle 提供了 ROWNUM 关键字限制结果集大小,MySQL 也提供了相同功能,写法略有差别。
In Oracle
SELECT * FROM table1 WHERE ROWNUM <= 2;
In MySQL
SELECT * FROM table1 LIMIT 0, 2;
-- 或
SELECT * FROM table1 LIMIT 2;
表别名规范
在 Oracle 表中别名不能为 AS,而 MySQL 则一定要有 AS。
迁移示例
将如下 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 "
+
+
+ + (start + length) + + start
+
+ ;

