SQL WHERE子句:根据值获取所有行/仅匹配的行

时间:2017-09-13 02:18:22

标签: sql sql-server vb.net

我在VB.NET for SQL Server中这样做,但我认为这是一个普遍的SQL问题。

我正在构建一个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

我可以像上面那样编写两个单独的查询或编写查询,但我想知道是否有更好的方法?

1 个答案:

答案 0 :(得分:0)

您应该使用参数查询。一种方法是:

WHERE Value = ? OR ? IS NULL

我应该注意,生成的查询可能不会使用索引。因此,从性能角度来看,两个单独的查询可能更好。