如果传入的参数值为空,如何创建不会更新列的批量更新?例如:
String UPDATE_STMT = "UPDATE MY_TABLE SET col1 = ?, col2 = ?, col3 = ?";
Connection conn = getConnection();
PreparedStatement pstmt = conn.preparedStatement(UPDATE_STMT);
List items = getItems();
for (ItemType item : items) {
stmt.setString(1, item.x);
stmt.setString(2, item.y);
stmt.setString(3, item.z);
}
pstmt.executeBatch();
如何对其进行编码,以便在 item.x 不为 null 或为空的情况下,仅使用 item.x 的值更新 col1?如果 item.x 为 null/空,我不希望覆盖 col1 字段中的当前值。这是针对 Oracle 10g 数据库的。
最佳答案
我想它应该适合你:
String UPDATE_STMT = "UPDATE MY_TABLE SET col1 =
CASE WHEN ? IS NULL THEN col1 ELSE ? END, col2 = ?, col3 = ?";
注意,现在需要设置 item.x 两次,stmt.setString(1, item.x); stmt.setString(2, item.x);
关于java - 在 Java 中执行 SQL 批量更新,如果传入的 parm 为 null,则不会更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463359/