我在DB中有一个表:
REGULAR(num(bigint) not allow null, title(nvarchar(10)), content(nvarchar(500)), path(nvarchar(50)) allow null)
有一些数据:
1.REGULAR1(1|title1|content1|path1)
2.REGULAR2(2|title2|content2|)--> path is not inputed (null)
我在SQL DB server 2008中执行一些查询:
1. select PATH from REGULAR where num='2'; -> result is PATH:NULL
但是
2. select count(*) from REGULAR where PATH = NULL; --> result is COUNT:0 (it must be 1 which has num=2)
因此,当我从Webform执行查询时,它运行错误
string sql= select * from REGULAR;
Datatable regular= excute(sql)....
for(int i=0;i<regular.Rows.Count; i++)
{
if(regular.Rows[i]["path"]!=null)
{
Textbox1.Text= "a";//do something else...
}
else
Textbox1.Text+="b";//...
}
,结果是:Textbox.Text= "ab"
---&gt;它很多是“一个”。
有没有错误???
答案 0 :(得分:3)
你应该使用“null”和“是”:
select count(*) from Regular where PATH is NULL
答案 1 :(得分:3)
无法使用比较运算符测试NULL值,例如=,&lt;或&lt;&gt;。
我们将不得不使用IS NULL和IS NOT NULL运算符。
如果您有两条记录,其中一条路径为null,另一条路径为非空
您获得的结果是正确的,因为一个项目将a
附加到文本框,另一个项目将b
附加到文本框。所以最终的结果是ab
答案 2 :(得分:1)
替换
if(regular.Rows[i]["path"]!=null)
使用:
if(!String.IsNullOrEmpty(regular.Rows[i]["path"]))