SqlParameter,SELECT语句,WHERE子句和DBNull.Value [英] SqlParameter, a SELECT statement, a WHERE clause and DBNull.Value

查看:99
本文介绍了SqlParameter,SELECT语句,WHERE子句和DBNull.Value的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,
我有一条像这样已被参数化的sql语句:

Hi all,
I have a sql statement that I have parameterized like this:

string sql = "SELECT * FROM xyz WHERE col1 = @val1 AND col2 = @val2";



一切正常,直到我必须像这样分配@ val2的空值为止:



Everything works fine until I have to deal with a null value for @val2 that I assign like this:

SqlParameter para1 = new SqlParameter("@val1", DBNull.Value)



SELECT语句不返回任何行.
如果我将查询更改为:



The SELECT statement returns no rows.
If I change the query to:

string sql = "SELECT * FROM xyz WHERE col1 IS NULL AND col2 = @val2";


效果很好.

我知道在sql语句中检查NULL需要使用"IS NULL",但是我应该如何使用参数化查询来处理它以获得相同的效果?


任何帮助,感激不尽,
最好的问候
Andy


it works fine.

I know that checking for NULL in a sql statement requires to use "IS NULL" but how should I deal with that using a parameterized query in order to get the same effect?


Any help is kindly appreciated,
best regards
Andy

推荐答案

SELECT * FROM xyz WHERE (@VAL1 IS NULL OR col1 IS NULL OR col1 = @val1) AND col2 = @val2


您好,

在IS NULL之前删除"="符号
Hi,

Remove ''='' sign before IS NULL
string sql = "SELECT * FROM xyz WHERE col1 IS NULL AND col2 = @val2";


这篇关于SqlParameter,SELECT语句,WHERE子句和DBNull.Value的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆