Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando como curinga na instrução preparada


Você precisa configurá-lo no próprio valor, não na string SQL da instrução preparada.

Então, isso deve funcionar para uma correspondência de prefixo:
notes = notes
    .replace("!", "!!")
    .replace("%", "!%")
    .replace("_", "!_")
    .replace("[", "![");
PreparedStatement pstmt = con.prepareStatement(
        "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'");
pstmt.setString(1, notes + "%");

ou uma correspondência de sufixo:
pstmt.setString(1, "%" + notes);

ou uma correspondência global:
pstmt.setString(1, "%" + notes + "%");