首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

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

2012-02-12 
对SQL语句中的WHERE子句中遇到NULL值的参数绑定问题现在我有一个SQL语句SELECTNAMEFROMTABLEWHERECOUNTRY

对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.

热点排行