关于sql多条件查询,但又不确定值的个数的方法。

主要用到sql的isnull方法 和 DBNull.Value。


isnull(参数1,参数2) 判断参数1 是否为NULL,如果是 返回参数2 否则返回参数1.

select ... where cxljdzj_isvip=isnull(@ckb,cxljdzj_isvip)....  判断@ckb是否为null,如果为null则where cxljdzj_isvip=cxljdzj_isvip,如果不为null则cxljdzj_isvip=@ckb。

其中 where cxljdzj_isvip=cxljdzj_isvip 意思就是查询所有的数据,跟没有这个where约束一样。

还有一个问题,new SqlParameter("@ckb",ckb), 在参数化数值的时候,如果ckb为null,则报错。(需要参数 '@ckb',但未提供该参数。)

因为此null为c#的,而DbNull.Value才是数据库中的null,我们传入参数,如果你给参数@ckb赋值为null,相当于没赋,因为cmd.Parameters[@ckb].Value的默认值就是null,而不是DbNull.Value。所以综上所诉,使用这个方法的时候,必须先判断是否为Null或者空字符串。如果是,则必须将DbNull.Value 赋值给 ckb.

即: if (ckb == null || ckb.ToString() == "")
{
ckb = DBNull.Value;
}


其他多条件的。也依次类推即可。




posted @ 2014-01-15 16:45  武二郎  阅读(1424)  评论(0编辑  收藏  举报