Java 用减法将查询替换为连字符

Java 用减法将查询替换为连字符,java,Java,我在网上搜索了好几次,但没有找到任何对我有帮助的东西(java) 事实上,我需要在sql表中搜索包含连字符的引用中的一些行。提出的问题是,sql使用减法的结果替换我的引用。列的类型为字符串 Statement stmt = con.createStatement(); String query = "SELECT * FROM WAREHOUSE WHERE REF LIKE('96-18')" ; Statement statement = con.createStatement(Result

我在网上搜索了好几次,但没有找到任何对我有帮助的东西(java)

事实上,我需要在sql表中搜索包含连字符的引用中的一些行。提出的问题是,sql使用减法的结果替换我的引用。列的类型为字符串

Statement stmt = con.createStatement();
String query = "SELECT * FROM WAREHOUSE WHERE REF LIKE('96-18')" ;
Statement statement = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

ResultSet rs = statement.executeQuery(query);
while (rs.next()) {
    System.out.println(rs.getString("S_FAMILY"));
}
在这段代码中,它将我的引用替换为78,并且不会自然地返回好的结果


我已搜索转义字符,但未找到。

尝试将
字符串作为查询中的参数发送。执行此操作需要将
语句
更改为
PreparedStatement

String query = "SELECT * FROM WAREHOUSE WHERE REF LIKE(?)" ;
PreparedStatement pstatement = con.prepareStatement(query,
            ResultSet.TYPE_FORWARD_ONLY,
            ResultSet.CONCUR_READ_ONLY);
pstatement.setString(1, "96-18");
ResultSet rs = pstatement.executeQuery();
注意:您应该将
“96-18”
作为
字符串的值发送,不要硬编码。

您可以尝试

SELECT * FROM WAREHOUSE WHERE REF LIKE('96\-18') ESCAPE '\'

希望它有帮助

LIKE
操作符后面的表达式不需要括号。根据您的SO历史记录,请不要忘记将对您帮助最大的帖子标记为答案。请参阅“否”。如果它不起作用,则方法executeQuery()不接受PreparedStatement或CallableStatement的任何参数。即使我在没有争论的情况下尝试它,它也不能正常工作,我已经以这种方式工作过,我从来没有遇到过任何问题。我与SqlServer Driver一起工作,在另一个软件中,我与H2一起工作,我不认为它会产生相同的问题。没有问题,非常感谢您的帮助,但问题没有解决yet@pidel也许只是我,但我认为
字符串
参数应该是
%96-18%
。现在问题解决了,事实上,如果我们写%96-18%,它将采取每一个参考与这一“部分”的参考,它不是真正有用的我在我的软件。只要写字符串就够了。@pidel它是怎么解决的?对不起,我不明白你最后的评论。