mysql改为oracle要改动的地方:

  1. 除去limit

​ ①.如果是做分页,直接去掉,用分页插件代替

​ ②.如果是取第一条,用 where ROWNUM = 1 代替

  1. 表别名写了as的,要去掉as

  2. SYSDATE() / now() 改成 SYSDATE

  3. where/and条件不能是数字,仅支持boolean, instr函数返回的就是数字, 在后面加上 >0 , =>INSTR(ORG_LINK, #{topOrgId})>0

  4. CONCAT('%',#{noOrName},'%') 改成 CONCAT( CONCAT('%',#{noOrName}) ,'%') 或者 ‘%’||#{noOrName}||’%’

  5. 批量插入/修改时,sql前面加 begin ,结尾处加 end;

  6. 不能插空值,估计要加配置

  7. IFNULL 改为 NVl

  8. DATE_FORMAT 原(%Y-%m-%d)改为 TO_CHAR 时间格式: ‘yyyy-MM-dd hh24:mi:ss’

  9. 没有find_in_set函数,可以考虑用instr代替

  10. 没有GROUP_CONCAT函数,用wm_concat代替

  11. 不能使用连表删除/修改,借助 EXISTS 删除 => https://blog.csdn.net/china_shrimp/article/details/78843256

  12. case when中有取字段和自定义时,需要用 Translate(‘根目录’ USING NCHAR_CS) 替换 ‘根目录’ 因为’根目录’ 是varchar2类型,而目前数据中是nvarchar2类型

  13. 删除insert语句上的 useGeneratedKeys=“true”

  14. 暂时发现 : 如果是select ,语句后面不允许加 " ; "

  15. 删除时.删除语句 { DELETE H.* FROM JBP_SERVICE_PROJECT H } 改为 { DELETE FROM JBP_SERVICE_PROJECT H }

  16. Oracle 不会自动将字符串转化成日期,如需插入字符串时间,使用 to_date 函数

  17. Oracle 降序排序时默认会把空值放前面,在order by 后面加上 NULLS LAST , 即可实现与mysql一样