Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwendung von Like-Platzhaltern in einer vorbereiteten Anweisung

Sie müssen es im Wert selbst festlegen, nicht in der SQL-Zeichenfolge der vorbereiteten Anweisung.

Das sollte also für eine Präfixübereinstimmung reichen:

notes = notes
    .replace("!", "!!")
    .replace("%", "!%")
    .replace("_", "!_")
    .replace("[", "![");
PreparedStatement pstmt = con.prepareStatement(
        "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'");
pstmt.setString(1, notes + "%");

oder ein Suffix-Match:

pstmt.setString(1, "%" + notes);

oder eine globale Übereinstimmung:

pstmt.setString(1, "%" + notes + "%");