J'utilise des instructions préparées pour exécuter des requêtes de base de données mysql. Et je souhaite implémenter une fonctionnalité de recherche basée sur une sorte de mot-clé.
Pour cela, j'ai besoin d'utiliser des LIKE
mots-clés, je le sais. Et j'ai également utilisé des instructions préparées auparavant, mais je ne sais pas comment l'utiliser avec LIKE
car à partir du code suivant, où ajouterais-je le 'keyword%'
?
Puis-je l'utiliser directement dans le pstmt.setString(1, notes)
comme (1, notes+"%")
ou quelque chose comme ça. Je vois beaucoup de messages à ce sujet sur le Web mais aucune bonne réponse nulle part.
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);
ResultSet rs = pstmt.executeQuery();
... LIKE '%' || ? || '%'
ou similaire - mais c'est beaucoup moins flexible.WHERE UPPER(?) LIKE UPPER(?)
lors de l'utilisationpstmt.setString(2, "%" + notes + "%")
'%' || ? || '%'
que comme mentionné dans le premier commentaire était mieux, après tout? Je n'ai pas l'opportunité d'expérimenter pour le moment.Codez-le comme ceci:
Assurez-vous de NE PAS inclure les guillemets '' comme ci-dessous car ils provoqueront une exception.
la source
nous pouvons le faire simplement, en utilisant la fonction SQL CONCATE.
cela fonctionne parfaitement pour mon cas.
la source
Essayez ceci.
la source
la source
la source