PreparedStatement updatestmt1 = con.prepareStatement("update BASE_TX set tx_vl=replace(tx_vl,?,?)");
updatestmt1.setString( 1, "${parm:"+ stringToreplace.trim() +"}" );
updatestmt1.setString( 2, "${parm:" + replacedString.trim() + "}" );
int ifUpdated1 = updatestmt1.executeUpdate();
ifUpdated1返回14480而不是受影响的行数,在我运行的情况下是none。如果他们实际更新或不更新,我就无法拨打电话。
答案 0 :(得分:2)
这是正确的行为。由于您未设置WHERE
,因此所有行都会受到影响。您的替换是身份的事实与DB无关。如果您确实想要受影响的行,请使用where
,如下所示:
"update BASE_TX set tx_vl=replace(tx_vl,?,?) where tx_vl != replace(tx_vl,?,?)"
请注意,它会降低您的查询速度,但会减少IO,这在您的情况下可能会更好。