转:jdbcTemplate查询Oracle列名大写问题
解决办法是在列名前后加上 双引号
代码如下:
List<Object> params = new ArrayList<Object>();
StringBuilder sb = new StringBuilder();
sb.append(" SELECT ");
sb.append(" T2.DD_NAME as \"name\", ");
sb.append(" 100 * round(COUNT(t.IDENTIFY_RESULT) / SUM(COUNT(t.IDENTIFY_RESULT) ) OVER(), 4 ) as \"value\" ");
sb.append(" FROM " + DBConst.RPT_RISK_ALERT + " T ");
sb.append(" RIGHT JOIN " + DBConst.TS_DATA_DICT + " T2 ON T.IDENTIFY_RESULT = T2.DD_KEY ");
sb.append(" WHERE 1=1 ");
sb.append(" AND T2.DD_KEY LIKE ? ");
params.add("00023_%");
sb.append(" GROUP BY T2.DD_NAME,T2.DD_KEY ");
sb.append(" ORDER BY T2.DD_KEY ");
List<Map<String, Object>> resultList = this.findForJdbc(sb.toString(), params.toArray());
生成的sql如下:
SELECT T2.DD_NAME AS "name", 100 * round(COUNT(t.IDENTIFY_RESULT) / SUM(COUNT(t.IDENTIFY_RESULT)) OVER (), 4) AS "value"
FROM RPT_RISK_ALERT T
RIGHT JOIN TS_DATA_DICT T2 ON T.IDENTIFY_RESULT = T2.DD_KEY
WHERE 1 = 1
AND T2.DD_KEY LIKE '00023_%'
GROUP BY T2.DD_NAME, T2.DD_KEY
ORDER BY T2.DD_KEY
结果如下:

浙公网安备 33010602011771号