我在我的sql语句中使用了一个不等于运算符<>
,但它没有检索任何不等于所选日期的记录。
CODE:
Command = New SqlCommand("SELECT * FROM [Products] WHERE [ParkingStartDate] <> @StartDate", myConn)
Command.Parameters.AddWithValue("@StartDate", StartDate1)
答案 0 :(得分:3)
如果满足以下任一条件,则不会返回任何内容:
StartDate1
是NULL
ParkingStartDate
为NULL
或等于StartDate1
(显而易见的)检查您是否在NULL
中传递了非StartDate1
值,并且有记录符合您的条件。
答案 1 :(得分:2)
如果值为null,则必须执行
Command = New SqlCommand("SELECT * FROM [Products] WHERE [ParkingStartDate] <> @StartDate OR ParkingStartDate is null", myConn)
Command.Parameters.AddWithValue("@StartDate", StartDate1)
答案 2 :(得分:0)
首先停止使用&lt;&gt;操作
改为使用!=(NOT EQUAL)
在sql中运行此语句。它将返回零结果。说明我的观点。
select '1' where NULL <> 0
改为使用
where columname != @startdate or columnname is null
答案 3 :(得分:0)
在处理基于日期的查询时要考虑的一个重要事项是SQL Server中的日期被视为与您发送日期一样精确。因此,如果您传递完整的日期/时间,例如{{ 1}},它将返回不 完全日期的所有日期。如果您要查找要选择的日期的特定部分,则只需提供该部分日期。使用2011-10-24 14:35:29
命令也会有所帮助。
答案 4 :(得分:0)
如果值未定义,则不包含在&lt;&gt;中或!=子句。 除此之外,您还可以使用sql函数'COALESCE()'来包含具有未定义单元格的行。
"SELECT * FROM [Products] WHERE COALESCE([ParkingStartDate],'') <> @StartDate OR ParkingStartDate is null"
希望它会对你有所帮助。
答案 5 :(得分:0)
我的建议是尝试使用NULLIF运算符。将您的查询修改为:
SELECT * FROM [Products] WHERE NULLIF([ParkingStartDate], @StartDate) IS NOT NULL OR ParkingStartDate is NULL
希望这有帮助。