对SQL语句中的WHERE子句中遇到NULL值的参数绑定有关问题

对SQL语句中的WHERE子句中遇到NULL值的参数绑定问题
现在我有一个SQL语句
SELECT   NAME   FROM   TABLE   WHERE   COUNTRY=:mcountry
其中mcountry为绑定的变量
在给mcountry赋值的时候,当mcountry为空则赋mcountry=DBNull.Value

这样SQL语句实际上就变成了:
SELECT   NAME   FROM   TABLE   WHERE   COUNTRY   =   NULL
这样是查不出来数据的。正确的应该是
SELECT   NAME   FROM   TABLE   WHERE   COUNTRY   IS   NULL

但是我又不能将SQL语句改为
SELECT   NAME   FROM   TABLE   WHERE   COUNTRY   IS   :mcountry
如果这样的话,那些mcountry值不为空的情况就不行了。

请问这个问题怎么解决啊?

------解决方案--------------------
if (mcountry != DBNull.Value)
strSQL =....;
else
strSQL = ...;
------解决方案--------------------
SELECT NAME FROM TABLE WHERE COUNTRY=isnull(mcountry,DBNull.Value)
------解决方案--------------------
你的SQL语句模版生成的时候就不应该有 = 或者 is.
放在mcountry的地方来决定用=或者is.就像上边星星说得那样。
------解决方案--------------------
你这样的需求
应该是通过 传入的值 来构建
不同的sql
而不将值给了sql了在数据库 语句运行时来判定.
------解决方案--------------------
看看强类型数据集,微软有现成的写法:

select * from table where (:isnullvalue = 1 and value is null) or value = :value.