J'essaie d'utiliser MapSqlParameterSource pour créer une requête en utilisant une clause Like.Spring Like clause
Le code est quelque chose comme ceci. La fonction contenant reçoit 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);
Ce ne fonctionne pas correctement, me donner quelque part entre 0-10 résultats alors que je devrais recevoir des milliers. Je veux essentiellement la requête finale à ressembler:
SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%name%'
mais cela ne se produit évidemment pas. Toute aide serait appréciée.
Edit:
J'ai aussi essayé de mettre la s '%' dans le SQL, comme
String finalName= nameParam.toLowerCase().trim();
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%:pname%' "
;
mais cela ne fonctionne pas non plus.
Vous êtes mon héros. Merci beaucoup. J'ai travaillé sur ceci pour une période embarrassingly longue. – Chris
que diriez-vous de la réponse acceptée l'amour? – Jeff
Quel est l'avantage de concaténer les symboles% dans le paramètre par rapport à sa mise en place dans votre requête sql? SELECT count (*) FROM Personnes O L LOWER (NOM) COMME '%' +: pname + '%' –