解决mysql 迁移到oracle convert()函数问题 Cause: java.sql.SQLSyntaxErrorException: ORA-00907: 缺失右括号
SQL语句为:
SELECT a.ID AS "id", a.PROJECT_NAME AS "projectName", a.SHORT_NAME AS "shortName", a.ENGINEERING_ID AS "engineeringId", a.PROJECT_NO AS "projectNo", a.UNITE_NO AS "uniteNo", a.OVERVIEW AS "overview", a.SCALE AS "scale", a.AREA_ID AS "area", a.LOCATION AS "location", a.DEAL_PROCESS AS "dealProcess", a.LAT AS "lat", a.LON AS "lon", a.LOCATION_AREA AS "locationArea", a.MONITOR_MODE AS "monitorMode", a.MONITOR_CONTENT AS "monitorContent", a.MONITOR_OBJECT AS "monitorObject", a.SUPPORT_STRUCTURE AS "supportStructure", a.PROJECT_CONDITION AS "projectCondition", a.PROJECT_STATUS AS "projectStatus", a.SAFE_LEVEL AS "safeLevel", a.HARM_DESCRIPTION AS "harmDescription", a.UNDERSTAND_CARD AS "understandCard", a.PROJECT_LEADER AS "projectLeader", a.PROJECT_PHONE AS "projectPhone", a.MONITOR_LEADER AS "monitorLeader", a.MONITOR_PHONE AS "monitorPhone", a.ATTACHMENT as "attachment", a.REMARKS AS "remarks", a.CREATE_BY AS "createBy", a.CREATE_DATE AS "createDate", a.UPDATE_BY AS "updateBy", a.UPDATE_DATE AS "updateDate", a.DEL_FLAG AS "delFlag", a.DISTRIBUTE_PIC AS "distributePic", a.ORG_UNIT_ID AS "orgUnitId", a.EXT_ATTR_1 AS "extAttr1", a.EXT_ATTR_2 AS "extAttr2", a.EXT_ATTR_3 AS "extAttr3", a.EXT_ATTR_4 AS "extAttr4", a.EXT_ATTR_5 AS "extAttr5", e.ENGINEERING_NAME AS "engineeringName", NVL(b.SHORT_NAME,b.NAME) AS "orgUnitName" FROM MONITORING_PROJECT a LEFT JOIN ENGINEERING_PROJECT e ON e.ID = a.ENGINEERING_ID LEFT JOIN ORG_UNIT b ON a.ORG_UNIT_ID = b.ID LEFT JOIN ORG_UNIT en ON e.ORG_UNIT_ID = en.ID WHERE a.DEL_FLAG = ? ORDER BY CONVERT(TRIM(IFNULL( en.SHORT_NAME, en.NAME )) USING GBK) ASC, TRIM(UPPER(e.ENGINEERING_NO)) ASC, a.PROJECT_NO ASC
优于mysql的convert函数为: 在mysql环境运行并不出错:
而在oracle运行出现了:缺少右括号,找了好久好久蔡发现是函数的原因。
而在oracle语法中:convert用法如下:
具体用法参考:https://blog.csdn.net/scliu/article/details/82321960 引用于该博主
我们只需要改了convert函数就行了