Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation d'un caractère générique similaire dans une instruction préparée

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 + "%");