例如,我对PreparedStatement有以下选择查询:
“选择FOO从哪里FOOBAR =?”
FOOBAR的参数可以有一个值,也可以为null。
以下代码是否有效?
if(<condition>) preparedStatement.setString(1, "<string value>");
else preparedStatement.setString(1, null);
如果没有,应如何处理?
答案 0 :(得分:5)
它不起作用,null没有等价。如果您正在使用PreparedStatement,请尝试以下方法:
if(<condition>) preparedStatement.setObject(1, "<string value>");
else preparedStatement.setNull(1, Types.VARCHAR);
它会将null作为IN参数发送。
答案 1 :(得分:1)
根据SQL标准,如果列具有NULL值,则检查其是否具有NULL值的搜索条件是“列IS NULL”。如果列没有空值,则可以使用“column ='blabla'等条件。要使参数标记在两种情况下均有效,请按以下方式更改语句:
SELECT FOO FROM BAR WHERE COALESCE(FOOBAR, 'a') = ? "
并拥有以下代码:
if(<condition>) preparedStatement.setString(1, "<string value>");
else preparedStatement.setString(1, "a");
无论@Mark建议什么都不适用于甲骨文。
答案 2 :(得分:0)
列值中的null值参数与空值之间存在差异。
答案 3 :(得分:-1)
if(requiredValue == null){
sql = "SELECT * FROM Table Where COLUMN is NULL"
}
在这种情况下,您不必设置值。