Estou usando instruções preparadas para executar consultas ao banco de dados mysql. E quero implementar uma funcionalidade de pesquisa com base em uma espécie de palavra-chave.
Para isso eu preciso usar a LIKE
palavra-chave, isso eu sei. E eu também já usei instruções preparadas antes, mas não sei como usá-lo LIKE
porque, a partir do código a seguir, onde eu adicionaria o 'keyword%'
?
Posso usá-lo diretamente no pstmt.setString(1, notes)
como (1, notes+"%")
ou algo assim. Vejo muitas postagens sobre isso na Web, mas não há uma boa resposta em nenhum lugar.
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);
ResultSet rs = pstmt.executeQuery();
... LIKE '%' || ? || '%'
ou similar - mas isso é muito menos flexível.WHERE UPPER(?) LIKE UPPER(?)
quando se utilizapstmt.setString(2, "%" + notes + "%")
'%' || ? || '%'
como mencionado no primeiro comentário tenha sido melhor, afinal? Não tenho a oportunidade de experimentar agora.Codifique-o assim:
Certifique-se de que você NÃO incluem as aspas '' como abaixo como eles vão causar uma exceção.
fonte
podemos fazer isso de forma simples, usando a função CONCATE SQL.
isso funciona perfeitamente para o meu caso.
fonte
Experimente isso.
fonte
fonte
fonte