系统更换数据库oracle到mysql问题汇总

1.主键

Oracle中 PRIMARY KEY 没有自增长属性, 比如主键是ID,插入时需要插入ID,一般都是通过建立序列进行插入

MySQl 中 PRIMARY KEY 可以在建表时设置 AUTO_INCREMENT属性,即自增长。插入数据时,不用care这个主键,如 insert 时,主键列可以忽略,写入其他列即可。 

2. 空值NUll的问题

 Oracle 中null 和 ''(空字符) 在插入库中都是一个 NULL ,MySql中 null 插入是null ,而 ‘’(空字符) 插入的是 ''(空字符)。

3. 获取当前时间:

oracle中 获取当前时间 select sysdate from dual, 在mysql没有 dual,不能执行 select xx from dual 等。

mysql : select current_date;  或     select current_time;  或    select current_timestamp as CURR_TIME;

oracle中在插入数据insert时 ,日期格式字段 ,直接写值 sysdate 即当前时间, mysql中是 current_date/current_time/current_timestamp,但是一般都是 default current_time。

4. 格式

1)时间

Oracle中 使用  TO_CHAR(Date, 'YYYY-MM-DD') 时间转换成字符; to_date( params, ''YYYY-MM-dd HH:mm:ss ' )字符转换成时间 

MySQL中 使用  date_format(t.CREATE_TIME,'%Y-%m-%d %h:%m:%s') 时间转换成字符,       STR_TO_DATE(#para(startDate),'%Y%m%d')字符转换成时间。

另外:MySQL中是可以将 时间和字符直接比较大小的,就是说 查询时间范围时不需要转换 可以直接比较。

2)字段符号,Oracle中 使用单引号 '',  而MySql中使用 尖号`` (感叹号左边的那个建)。

5. 函数 

1)case  when ... then .... end ; 在 Mysql 和Orcale 都适用 。用法   select  case  when  t.sex=1 then ‘男’ when t.sex =0 then ‘女’ end  sex from t_user  

2)wmsys.wm_contact (字符连接方法',' ) 

  Orace中的函数,Mysql没有。 用法:例如:  学生选课表 t_course,

   student_id   course_name
---------- ------------------------------
        10               诗词鉴赏
        10               世界地理
        10               影视鉴赏
        20               社交英语
        20               近代舞
        20               中国武术

select student_id,  wmsys.wm_contact(course_name) as course_name from t_course group by student_id 

执行结果:

student_id   course_name
---------- ------------------------------
        10               诗词鉴赏, 世界地理,影视鉴赏         
        20               社交英语, 近代舞 ,中国武术
需要注意的: Oracle在11g之后  wmsys.wm_contact 返回的结果是blob类型,用的时候需要将 类型转换成字符 使用 dbms_lob.substr方法:

即 select student_id,  dbms_lob.substr(wmsys.wm_contact(course_name) ) as course_name from t_course group by student_id 

在MySql 有和 wmsys.wm_contact 功能一样的方法, group_concat , 用法:

select student_id,  group_concat(course_name)  as course_name from t_course group by student_id 

--- 待补充

最后. 一些异常处理

异常:com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: UDAL - Illegal sql statement: explain total rows is more than  10000 or number of rows from single dn is bigger than 5, affected rows is more than expected,{1}

---原因: 表关联时,没有给关联表的建加上索引导致

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值