【发布时间】:2018-10-11 09:06:32
【问题描述】:
我有很大的选择条件。
WHERE ADB.param1=@param
在我发送参数变量的位置
SqlParameter param1Param = cmd.Parameters.AddWithValue("@param1", param1);
if (param1== null)
{
param1Param.Value = DBNull.Value;
}
此代码的工作方式如下。
当查询执行时,它总是检查ADB.param1=param 条件,当我发送 DBNull.Value 时,它从数据库中什么也得不到。
但我想要的不是那个
如果参数== null
然后它不注意这种情况并从数据库中获取所有行。我怎样才能做到这一点?
【问题讨论】:
-
假设我们讨论的是 MS SQL Server,您不能使用
=将列值与NULL进行比较...您必须使用IS NULL或IS NOT NULL -
为什么不动态构建查询?当
param1为空时,只需从查询中丢弃WHERE ADB.param1=param。 -
这部分代码你能写吗?我的意思是检查 ADB.param1=@param 如果@param 不为空
-
where (ADB.param1=@param or @param is null) -
@David - 当
@param为空时,您希望查询返回所有行...还是只返回param1为空的行?
标签: c# sql if-statement null where