关键字 加引号保留字
-- 关键字 别名的时候 双引号 通用, 列名 需要用反单引号 `` 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>