[英]In Java DB2 JDBC: How can one use null parameters in a WHERE clause for a SELECT statement where the value can be either null or not null?
例如,我對PreparedStatement有以下選擇查詢:
“選擇FOO從哪里FOOBAR =?”
FOOBAR的參數可以有一個值,也可以為null。
以下代碼是否有效?
if(<condition>) preparedStatement.setString(1, "<string value>");
else preparedStatement.setString(1, null);
如果沒有,應如何處理?
它不起作用,null沒有等價。 如果您正在使用PreparedStatement,請嘗試以下操作:
if(<condition>) preparedStatement.setObject(1, "<string value>");
else preparedStatement.setNull(1, Types.VARCHAR);
它將null作為IN參數發送。
根據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建議什么都不適用於Oracle。
空值參數與列中的空值之間存在差異。
if(requiredValue == null){
sql = "SELECT * FROM Table Where COLUMN is NULL"
}
在這種情況下,您不必設置值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.