我在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
我可以像上面那样编写两个单独的查询或编写查询,但我想知道是否有更好的方法?
答案 0 :(得分:0)
您应该使用参数查询。一种方法是:
WHERE Value = ? OR ? IS NULL
我应该注意,生成的查询可能不会使用索引。因此,从性能角度来看,两个单独的查询可能更好。