Sto cercando di utilizzare un MapSqlParameterSource per creare una query utilizzando una clausola simile.clausola Spring Like
Il codice è qualcosa di simile. La funzione di contenimento che riceve 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);
Questo non funziona correttamente, dandomi da qualche parte tra 0-10 risultati quando dovresti ricevere migliaia. In sostanza vorrei che la query finale assomigliasse:
SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%name%'
ma questo evidentemente non sta accadendo. Qualsiasi aiuto sarebbe apprezzato.
Edit:
Ho anche provato a mettere il '%' s in SQL, come
String finalName= nameParam.toLowerCase().trim();
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%:pname%' "
;
ma questo non funziona neanche.
Sei il mio eroe. Molte grazie. Ho lavorato su questo per un periodo di tempo imbarazzante. – Chris
che ne dici di una risposta accettata amore? – Jeff
Qual è il vantaggio di concatenare i simboli% nel parametro vs metterlo direttamente nella query sql? SELECT count (*) FROM People WHERE LOWER (NAME) COME '%' +: pname + '%' –