对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.
当
现在我有一个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.
当