我有一些代码可以像这样创建一个Null参数
p = cmd.CreateParameter();
p.DbType = DbType.Int32;
p.ParameterName = strName;
p.Value = DBNull.Value;
cmd.Parameters.Add(p);
当我插入记录时,SQLValue设置为{Null}
使用列的Null值正确创建记录。
当我选择一条记录来尝试检索一个Null值的记录时,使用上面相同的方法设置参数。再次参数的SQLValue是{Null}
所以相同的代码设置相同...但现在它不返回记录。当我想创建一个具有空值的参数(p.Value = DBNull.Value;)时,我无法检索任何记录。我一无所获。
我知道它不是查询,因为如果我将参数更改为具有值的参数,我会返回该记录。我是否缺少设置参数来查找空值?我所看到的一切都说是这样做的。
如下所述,是查询
Select * from view_full_class_nests
where parent_interface_class_pk = @parent_interface_class_pk
同样如前所述,如果参数设置为值,则此查询正常工作...如果值为DBNull.Value
,则无法检索以下DanD提供了有用的链接,给了我答案
需要查询从view_full_class_nests中选择* 其中parent_interface_class_pk = @parent_interface_class_pk或@parent_interface_pk为空
答案 0 :(得分:2)
您无法在where子句中比较NULL:
来自https://msdn.microsoft.com/en-us/library/ms172138(v=vs.100).aspx:
因为null被认为是未知的,所以两个相互比较的空值不被认为是相等的。在使用算术运算符的表达式中,如果任何操作数为null,则结果也为null。
您必须使用ISNULL运算符,请参阅下面的内容,以获得可能对您有帮助的先前答案: