Oracle 转MySql

关键字 加引号保留字

-- 关键字 别名的时候 双引号 通用, 列名 需要用反单引号 ``
describe   "describe"  
key     "key"    --正则 \s+key\s*,
cube  "cube" 
" " 有时候 有 比较 奇怪的报错 看看 语句里面是不是有这种空格  

注释规范

-- 注释   --与注释之间需要有空格

日期处理

mysql : DATE_FORMAT(NOW(),'%Y-%m-%d  %H:%i:%s')
        str_to_date('2012-05-01 23:59:59','%Y-%m-%d %T')
oracle:  TO_CHAR(SYSDATE,'YYYY-MM-DD hh24:mi:ss')
        to_date(sysdate,'yyyy-mm-dd')

 

nvl函数

mysql: ifnull(A.USER_KPI,0)
oracle: NVL(A.USER_KPI,0)

 

其他函数

函数与括号之间不能有空格 ,函数 count (1) 错误写法

lpad 不用改
调用存储 不用改

concat mysql  可以多个拼接  2个字段拼接 mysql oracle 通用,多个不行
       oracle 只能2个拼接, 多个需要嵌套调用 多个可以用 ||   

decode 函数 mysql 用以下2种方式替代 建议用case when  兼容 mysql oracle
 -- 1.case when then
    Select title,case Emergency when 1 then '紧急'  else '普通' End  as  emergency   from already_sign
 --  2.if
    select a.title,if(a.Emergency=1,'紧急','普通')emergency from already_sign a

over() 
不是分页的一般可以直接去掉
分页的 复制一个count 方法 去掉这一列,代码中 直接用count 兼容 oracle mysql 


TO_NUMBER

 

oracle 的 to_number
mysql 不需要

 

序列

mysql:  SELECT nextval_ncounter('SEQ_MD_ENTITY_ATTRIBUTE')  
创建了一个函数nextval_ncounter 查keycount表,需要在ncounter 表加一条数据

oracle: select SEQ_MD_ENTITY_ATTRIBUTE.nextval from dual

 

 

字符串截取

oracle SUBSTR('xxxxxx',0,10)  
mysql SUBSTR('xxxxxx',1,10)
下标不一样

 

 

翻页

oracle rownum
mysql limit 

--if 判断多数据库
  <if test="_databaseId='oracle'">
                FROM DUAL
    </if>

    <select id="queryListOfDark" resultType="com.rtx.inbound.asn.bean.Receipt">
        <![CDATA[
            SELECT * FROM (SELECT  r.*,  rownum rn FROM
                     (  SELECT  r.*  FROM receipt r  where 1=1
        ]]>
        <if test='spiltChars!=null'>
            ${spiltChars}
        </if>
        <![CDATA[      
              order by serialkey desc) r WHERE rownum <= #{s_pageSize})
                WHERE rn >= #{s_currentPage} 
        ]]>
    </select>
    --databaseid 区分多数据库
    <select id="queryListOfDark" resultType="com.rtx.inbound.asn.bean.Receipt" databaseId="mysql">
        <![CDATA[
             SELECT  r.* FROM
                     ( SELECT * FROM receipt r where 1=1
        ]]>
        <if test='spiltChars!=null'>
            ${spiltChars}
        </if>
        <![CDATA[
                order by serialkey desc) r
                  limit #{startPage},#{pageSize}
        ]]>
    </select>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值