• Oracle、MySQL使用区别


    1.MyBatis中的 foreach标签使用区别:

    1. <if test="dbType=='oracle'">
    2. <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
    3. update test set name=${item.name} where seq=${item.seq}
    4. foreach>
    5. if>
    6. <if test="dbType=='mysql'">
    7. <foreach collection="list" item="item" index="index" open="" close="" separator=";">
    8. update test set name=${item.name} where seq=${item.seq}
    9. foreach>
    10. if>

    2.like 的使用区别:

    1. oracle:where seq like #{seq} || '%'
    2. mysql: where seq like concat(#{seq},'%')
    3. b.name like CONCAT(CONCAT('%',#{name}),'%')

    3. 函数通过子类查询到父类:

    3.1 函数通过子类查询到父类

    Oracle:

    1. select *
    2. from test a
    3. connect by a.unit_code = prior a.para_unit_code
    4. start with a.unit_code = #{unitCode}
    5. order by a.unit_code asc

    MySQL

    1. select *
    2. from test a
    3. find_in_set(a.unit_code,(select getparentunitlist (#{unitCode})))
    4. order by a.unit_code asc

    MySQL的 find_in_set函数的使用:

    https://www.jb51.net/article/143105.htm

    MySQL自定义函数,实现父子查询getparentunitlist函数的使用:

    https://blog.csdn.net/qq_28428687/article/details/79107818?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-1-79107818.pc_agg_new_rank&utm_term=MySQL%E7%9A%84getparentlist%E5%87%BD%E6%95%B0&spm=1000.2123.3001.4430

    3.1 函数通过父类查询到子类:

    1. <select id="getChildrenArea" resultType="java.lang.String" databaseId="oracle">
    2. select
    3. AREA_SEQ
    4. from test_area aua
    5. start with aua.area_seq = #{areaSeq}
    6. connect by prior aua.area_seq = aua.parent_area_seq
    7. select>
    8. <select id="getChildrenArea" resultType="java.lang.String" databaseId="mysql">
    9. select
    10. AREA_SEQ
    11. from test_area aua where
    12. FIND_IN_SET (aua.AREA_SEQ, getChildareaLst(#{areaSeq}))
    13. select>

    4. 字段转换:

    Oracle中 wm_concat() 函数的使用:

    wm_concat()函数是oracle行列转换函数,该函数可以把列值以‘,’分割开来,并显示成一行。

    Oracle中 over(order by )分区转换、 over(order by )连续转换函数的使用:

    地址:

    https://blog.csdn.net/iteye1011/article/details/12782887?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&utm_relevant_index=2

    5. 当前时间的获取:

    Oracle:SYSDATE

    MySQL:NOW()

    6.mysql 获取昨天日期、今天日期、明天日期以及前一个小时和后一个小时的时间:

    1. https://www.jb51.net/article/132425.htm
    2. 1、当前日期
    3. select DATE_SUB(curdate(),INTERVAL 0 DAY) ;
    4. 2、明天日期
    5. select DATE_SUB(curdate(),INTERVAL -1 DAY) ;
    6. 3、昨天日期
    7. select DATE_SUB(curdate(),INTERVAL 1 DAY) ;

    7.Oracle数据库获取前一天日期、当月第一天日期

    1. 获取前一天日期SQLselect to_char(sysdate-1,'yyyy-mm-dd') from dual
    2. 获取当月第一天日期SQLselect to_char(sysdate-1,'yyyy-mm')||'-01' from dual
    3. <if test="@com.minstone.apprEfficiency.common.constant.ConfigConstant@DBTYPE =='oracle'">
    4. and to_char(h.SCSJSJ,'yyyy-MM-dd') >= to_char(sysdate -1,'yyyy-mm-dd')
    5. </if>
    6. <if test="@com.minstone.apprEfficiency.common.constant.ConfigConstant@DBTYPE =='mysql'">
    7. and to_char(h.SCSJSJ,'yyyy-MM-dd') >= date_sub(curdate(), interval 1 day )
    8. </if>

    8.时间格式的转换:

    1. 注意:Oracle是不区分大小写的
    2. <if test="dbType=='oracle'">
    3. TO_CHAR(A.UPDATE_TIME,'YYYY-MM-DD HH24:MI:SS') AS UPDATE_TIME
    4. if>
    5. <if test="dbType=='mysql'">
    6. DATE_FORMAT(A.UPDATE_TIME,'%Y-%m-%d %H:%i:%s') AS UPDATE_TIME
    7. if>

    10 mysql的 if 和oracle 的 decode

    https://blog.csdn.net/nimeijian/article/details/50470189?spm=1001.2101.3001.6650.16&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16.pc_relevant_antiscanv2&utm_relevant_index=17

    总结:
    通过比较,可以发现:
    ifNull(exp1,exp2)类似于nvl(exp1,exp2);
    if(exp1,exp2,exp3)类似于nvl2(exp1,exp2,exp3);
    CASE WHEN 类似于DECODE()。

    11.字符集问题:

    1. https://www.cnblogs.com/youjianjiangnan/p/9114791.html
    2. mysql修改表,字段的字符集
    3. http://blog.itpub.net/29254281/viewspace-1285916/

            字符集问题比较恶心,之前遇到的问题建库的时候设置的是gbk的字符集(好像这样的字符集外文 会乱码),但是生产环境存在大量的数据,又不能修改字符集,所以当时是把外文字段base64编码之后存入数据库,取出来的时候再解码,非常的繁琐。请注意,后续建库建表的时候请设置好。巨大的坑啊。数据库被设置为gbk的编码

  • 相关阅读:
    基于矩阵分解算法的智能Steam游戏AI推荐系统——深度学习算法应用(含python、ipynb工程源码)+数据集(四)
    VMware——WindowServer2012R2环境安装mysql5.7.14解压版_互为主从(图解版)
    Fiddler抓取手机https包的步骤
    抖音返利小程序功能开发介绍
    想在抖音开店粉丝不够怎么办?不足1000粉丝的,来看怎么操作
    简单的抓包
    (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
    记一次 .NET 某智能交通后台服务 CPU爆高分析
    【block作为函数的参数之二 Objective-C语言】
    栈 之 如何实现一个栈
  • 原文地址:https://blog.csdn.net/liumangtutu2919/article/details/126941572