Vous devez le définir dans la valeur elle-même, et non dans la chaîne SQL de l'instruction préparée.
Donc, cela devrait suffire pour une correspondance de préfixe :
notes = notes
.replace("!", "!!")
.replace("%", "!%")
.replace("_", "!_")
.replace("[", "![");
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'");
pstmt.setString(1, notes + "%");
ou une correspondance de suffixe :
pstmt.setString(1, "%" + notes);
ou une correspondance globale :
pstmt.setString(1, "%" + notes + "%");