Estoy tratando de usar un MapSqlParameterSource para crear una consulta utilizando una cláusula Like.Cláusula Spring Like
El código es algo como esto. La función que contiene recibe 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);
esto no funciona correctamente, y me da en algún lugar entre 0-10 resultados cuando debería estar recibiendo miles. Básicamente, quiero que la consulta final tenga el siguiente aspecto:
SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%name%'
pero evidentemente esto no está sucediendo. Cualquier ayuda sería apreciada.
Editar:
También he intentado poner el '%' s en el SQL, como
String finalName= nameParam.toLowerCase().trim();
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%:pname%' "
;
pero esto tampoco funciona.
Eres mi héroe. Muchas gracias. He estado trabajando en esto durante un período de tiempo embarazosamente largo. – Chris
¿Qué tal una respuesta aceptada amor? – Jeff
¿Cuál es la ventaja de concatenar los símbolos% en el parámetro vs ponerlo directamente en su consulta sql? SELECCIONAR recuento (*) FROM Personas WHERE INFERIOR (NOMBRE) COMO '%' +: pname + '%' –