我正在使用这个:
PreparedStatement preStatement = conn.prepareStatement("SELECT * FROM SomeTable WHERE attributeId = ? AND substring_index(substring_index(rowIdCombo,',',2),',',-1) = ?");
preStatement.setString(1, anAttributeID.toString());
preStatement.setString(2, locationID.toString());
使用相同的查询进行搜索在MySQL终端上可以正常工作。只有在
PreparedStatement
中使用Java
时才使用。rowIdCombo基本上是一串数字,用逗号分隔。像这样的东西:
23,56,64,3
。返回的结果集为空。如何使该查询起作用?
最佳答案
根据输出
System.out.println(preStatement);
那是:
com.mysql.jdbc.PreparedStatement@223d2c72: SELECT * FROM mydb.SomeTable WHERE attributeId = '6' AND substring_index(substring_index(rowIdCombo,',',2),',',-1) = '1'
根据您的评论,用= 1替换='1'已解决了该问题,为防止单引号引起来,请将
PreparedStatement
中的值设置为整数,请使用以下命令:preStatement.setInt(2, Integer.parseInt(locationID.toString()));