有下列字符串建立SQL查詢:像%%不作爲StringBuilder的SQL查詢的一部分工作
StringBuilder querySelect = new StringBuilder("select * from messages ");
StringBuilder queryWhere = new StringBuilder("where msg_id=?");
if (fileRSVO.getFileName()!= null){
queryWhere.append("and descr LIKE %?% ");
}
querySelect.append(queryWhere);
List<Map<String, Object>> list = getJdbcTemplate().queryForList(querySelect.toString(), params.toArray());
...
的問題是在這個部分:
queryWhere.append("and descr LIKE %?% ")
LIKE
不起作用。
檢入調試 - 將其添加到所有查詢中。
它應該是單引號還是其他一些技巧?
謝謝。
EDITED
試圖單引號:queryWhere.append("and descr LIKE '%?%' ")
不起作用
這裏是調試字符串:
select * from messages where msg_id=? and descr LIKE '%?%'
queryWhere.append(「和descr LIKE'%」+ fileRSVO.getFileName()+「%'」) - 它是,無論如何你的方向是正確的 – sergionni 2011-03-21 20:18:04
@serionni:這是一個非常糟糕的解決方案,它很容易受到SQL注入。使用我的解決方案(在數據庫端添加'%'s)或Justin Muller的(在將'fileRSVO.getFileName()'放入'params'時添加'%'s)。 – axtavt 2011-03-21 20:29:11
@sergionni:注意糾正,這種方式應該更符合數據庫。 – axtavt 2011-03-21 20:35:32