Estoy usando declaraciones preparadas para ejecutar consultas de bases de datos mysql. Y quiero implementar una funcionalidad de búsqueda basada en una especie de palabra clave.
Para eso necesito usar LIKE
palabras clave, eso lo sé. Y también he usado declaraciones preparadas antes, pero no sé cómo usarlo LIKE
porque, desde el siguiente código, ¿dónde agregaría el 'keyword%'
?
¿Puedo usarlo directamente en el pstmt.setString(1, notes)
as (1, notes+"%")
o algo así? Veo muchas publicaciones sobre esto en la web, pero no hay una buena respuesta en ningún lado.
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);
ResultSet rs = pstmt.executeQuery();
... LIKE '%' || ? || '%'
o similar, pero eso es mucho menos flexible.WHERE UPPER(?) LIKE UPPER(?)
cuando se usapstmt.setString(2, "%" + notes + "%")
'%' || ? || '%'
como se menciona en el primer comentario fue mejor, después de todo? No tengo la oportunidad de experimentar en este momento.Codifícalo así:
Asegúrese de NO incluir las citas '' como se muestra a continuación, ya que causarán una excepción.
fuente
podemos hacer esto de manera simple, usando la función CONCATE SQL.
Este es un trabajo perfecto para mi caso.
fuente
Probar esto.
fuente
fuente
fuente