我想用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%'
但这显然没有发生。任何帮助,将不胜感激。
编辑:
我也曾尝试把'%的在SQL,像
String finalName= nameParam.toLowerCase().trim();
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%:pname%' "
;
但这也不起作用。
你是我的英雄。非常感谢。我一直在努力研究这一段很长的时间。 – Chris 2010-07-14 18:14:33
如何接受一些被接受的答案? – Jeff 2010-07-14 19:05:26
将%符号连接到参数中并将其直接放入sql查询中的好处是什么? SELECT count(*)FROM WHERE LOWER(NAME)LIKE'%'+:pname +'%' – 2016-07-09 02:50:41