SQL中的字段为NULL

时间:2013-09-15 12:11:04

标签: c# asp.net sql-server

我在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;它很多是“一个”。 有没有错误???

3 个答案:

答案 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"]))