【发布时间】:2011-03-15 21:05:24
【问题描述】:
我正在尝试使用 MapSqlParameterSource 创建使用 Like 子句的查询。
代码是这样的。包含它的函数接收 nameParam:
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE :pname ";
String finalName= "'%" +nameParam.toLowerCase().trim() + "%'";
MapSqlParameterSource namedParams= new MapSqlParameterSource();
namedParams.addValue("pname", finalName);
int count= this.namedParamJdbcTemplate.queryForInt(namecount, namedParams);
这不能正常工作,当我应该收到数千个结果时,给我的结果介于 0-10 之间。我基本上希望最终查询看起来像:
SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%name%'
但这显然没有发生。任何帮助将不胜感激。
编辑:
我也尝试过将 '%'s 放在 SQL 中,例如
String finalName= nameParam.toLowerCase().trim();
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%:pname%' "
;
但这也不起作用。
【问题讨论】: