0

我在数据库中有一张桌子:

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"--->它很可能是“a”。有错吗???

4

3 回答 3

3

您应该将“null”与“is”一起使用:

select count(*) from Regular where PATH is NULL
于 2013-09-15T12:14:49.960 回答
3

无法使用比较运算符(例如 =、< 或 <>)测试 NULL 值。

我们将不得不使用 IS NULL 和 IS NOT NULL 运算符。

如果您有两条记录,一条路径为空,另一条路径不为空

您得到的结果是正确的,因为一项附加a到文本框,另一项附加b到文本框。所以最终的结果是ab

于 2013-09-15T12:16:12.197 回答
1

代替

if(regular.Rows[i]["path"]!=null)

和:

if(!String.IsNullOrEmpty(regular.Rows[i]["path"]))
于 2013-09-15T12:17:08.647 回答