簡體   English   中英

在Java DB2 JDBC中:如何在WHERE子句中為SELECT語句使用null參數,其中值可以為null或不為null?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM