2017-09-13 125 views
0

我在VB.NET for SQL Server中執行此操作,但我認爲這是一個通用的SQL問題。SQL WHERE子句:根據值獲取所有行/只匹配行

我建立一個SQL查詢,我想避免這樣做:

Dim SQL As String = "SELECT * FROM Table" 
If Not IsDbNull(Value) Then 
    SQL &= " WHERE Value = " & Value 
End If 

有沒有寫一個WHERE子句,這樣,如果一個值爲NULL,則查詢返回的所有行的方式否則只返回與提供的值相匹配的行。

例如:

如果該值是NULL,則結果集將是:

ID Value City 
1 1  New York 
2 1  London 
3 2  Paris 
4 4  Mumbai 

如果該值是2,則結果集將是:

ID Value City 
3 2  Paris 

我可以編寫兩個單獨的查詢或按上述方式編寫查詢,但我想知道是否有更好的方法?

回答

0

您應該使用參數查詢。一種方法是:

WHERE Value = ? OR ? IS NULL 

我應該注意,結果查詢可能不會使用索引。因此,從性能角度來看,兩個單獨的查詢可能會更好。

+0

我同意參數和例子被簡化以節省空間。 –

+0

OMG ...自80年代中期以來,我一直在寫SQL,我無法相信我錯過了一個簡單的答案。謝謝戈登。 –

相關問題