| | |
| | | // varchar / char / text 等字符串类型 |
| | | if (dataType.contains("char") || dataType.contains("text") || dataType.contains("enum")) { |
| | | if (colName.equals("deptcode")) { |
| | | activeParams.add(new Object[]{"p_" + colName, colName, "in", colType}); |
| | | activeParams.add(new Object[]{"p_" + colName, colName, "in", "TEXT"}); |
| | | break; |
| | | } |
| | | if (colName.equals("hospitaldistrictcode")) { |
| | | activeParams.add(new Object[]{"p_" + colName, colName, "in", colType}); |
| | | activeParams.add(new Object[]{"p_" + colName, colName, "in", "TEXT"}); |
| | | break; |
| | | } |
| | | String kind = forceEqCols.contains(colName) ? "eq" : (eqPattern.matcher(colName).find() ? "eq" : "like"); |
| | |
| | | line = " IF " + pName + " IS NOT NULL THEN SET @cond=CONCAT(@cond,' AND " + col + "=',QUOTE(" + pName + ")); END IF;"; |
| | | break; |
| | | case "like": |
| | | // MySQL 存储过程内 '' 表示一个单引号 |
| | | line = " IF " + pName + " IS NOT NULL THEN SET @cond=CONCAT(@cond,' AND " + col + " LIKE CONCAT(''%''," + pName + ",''%'')'); END IF;"; |
| | | // 必须用 QUOTE() 把值展开到字符串里,否则 PREPARE 执行时参数名被当列名 |
| | | line = " IF " + pName + " IS NOT NULL THEN SET @cond=CONCAT(@cond,' AND " + col + " LIKE CONCAT(''%'',',QUOTE(" + pName + "),',''%'')'); END IF;"; |
| | | break; |
| | | case "date_ge": |
| | | line = " IF " + pName + " IS NOT NULL THEN SET @cond=CONCAT(@cond,' AND " + col + ">=',QUOTE(" + pName + ")); END IF;"; |