Spring Like-Klausel
Ich bin versucht, einen MapSqlParameterSource um eine Abfrage zu erstellen mit einer Like-Klausel.
Den code so etwas wie dieses. Die Funktion enthält, die es erhält, 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);
Funktioniert das nicht richtig, was mich irgendwo zwischen 0-10 Ergebnisse, wenn ich sein sollte, erhalten Tausende. Ich im wesentlichen will die endgültige Abfrage wie folgt Aussehen:
SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%name%'
aber das ist offenbar nicht passiert. Jede Hilfe würde geschätzt werden.
Edit:
Habe ich auch versucht, indem Sie das '%'s in die SQL, wie
String finalName= nameParam.toLowerCase().trim();
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%:pname%' "
;
aber das funktioniert auch nicht.
InformationsquelleAutor der Frage Chris | 2010-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wollen Sie nicht die Anführungszeichen um Ihre finalName string. mit dem benannten Parameter, die Sie nicht angeben müssen. Sollte dies funktionieren:
InformationsquelleAutor der Antwort Jeff
Diese Lösung funktionierte für mich. Ich legte die "%" auf das Object[] Parameter-Liste:
InformationsquelleAutor der Antwort Andrea Girardi
Haben Sie versucht, die Platzierung der % wild Karten in deinem sql-string (nicht die bind-variable value selbst):
InformationsquelleAutor der Antwort Brian
Wir können einfach JdbcTemplate statt NamedParamJdbcTemplate
Hoffe, dass es hilfreich für jemanden, der mit JdbcTemplate
InformationsquelleAutor der Antwort bnguyen82