Browse Source

fix 'limit' and 'order' SQL syntax error

sunyj 7 years ago
parent
commit
3bd8932dfd

+ 3 - 1
report/src/main/java/com/uas/report/service/impl/PrintServiceImpl.java

@@ -291,7 +291,9 @@ public class PrintServiceImpl implements PrintService {
 			// 如果查询语句中含有WHERE_CONDITION参数,需将其替换掉
 			if (queryString.contains("$P!{WHERE_CONDITION}")) {
 				if (JdbcUtils.MYSQL.equals(dbType)) {
-					queryString = queryString.replace("$P!{WHERE_CONDITION}", "limit 0, 1");
+				    // 不能直接替换为 "limit 0, 0",因为 where 之后如果跟有 order 等,会存在语法错误
+					queryString = queryString.replace("$P!{WHERE_CONDITION}", "where 1 = 1");
+					queryString = "select * from (" + queryString + ") as tbalias limit 0, 0";
 				} else if (JdbcUtils.ORACLE.equals(dbType)) {
 					queryString = queryString.replace("$P!{WHERE_CONDITION}", "where rownum = 0");
 				} else{