Я пытаюсь использовать MapSqlParameterSource для создания запроса с помощью предложения Like.Spring Как статья
Код выглядит примерно так. Функция, содержащая его получает 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%'
, но это, очевидно, не происходит. Любая помощь будет оценена по достоинству.
Edit:
Я также попытался поставив '%' s в SQL, как
String finalName= nameParam.toLowerCase().trim();
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%:pname%' "
;
но это также не работает.
Ты мой герой. Большое спасибо. Я работаю над этим в течение смутно длительного периода времени. – Chris
как насчет какой-то принятой ответной любви? – Jeff
В чем преимущество конкатенации символов% в параметр vs, непосредственно помещающих его в ваш sql-запрос? SELECT count (*) FROM People WHERE LOWER (NAME) LIKE '%' +: pname + '%' –