Java 用减法将查询替换为连字符
我在网上搜索了好几次,但没有找到任何对我有帮助的东西(java) 事实上,我需要在sql表中搜索包含连字符的引用中的一些行。提出的问题是,sql使用减法的结果替换我的引用。列的类型为字符串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
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它是怎么解决的?对不起,我不明白你最后的评论。