Null、Nothing和字符串空的区别

Null

在计算机中Null含义通常表示空值,无结果,或是空集合。其深刻含义并非是“0”,而是表示“未知”的值,大概有三种情况:
1)知道数据存在,但不知道具体值.
2)不知道数据是否存在.
3)数据不存在.

字符串空

就像你面前有一个杯子,虽然里面没水,没别的什么东西,但是还是有空气的,在咱们写代码的时候,首先想到的就是:if(txtCardNo.Text==”“),这里的“”就是代表什么都没有,即没在Text框框中输入任何内容。
我对这里感触最深的一个例子就是我的组合和查询用的是存储过程,在满足不满足条件的时候代码是这样写的:
SET NOCOUNT ON;

-- Insert statements for procedure here
set @TempSql= 'SELECT * FROM '+@tableName +' WHERE ' +@cmbZiDuan1+char(32)+@cmbCaoZuoFu1+char(32)+char(39)+@txtSearch1+char(39)
 if (@cmbRealation1 **is not null**)
 BEGIN  
    set @TempSql=@TempSql +@cmbRealation1 +char(32)+ @cmbZiDuan2+char(32)+ @cmbCaoZuoFu2+char(32) +char(39)+ @txtSearch2+ char(39)
    if (@cmbRealation2 **is not null**)
    BEGIN  
        set @TempSql=@TempSql+@cmbRealation2+char(32)+@cmbZiDuan3+char(32)+@cmbCaoZuoFu3+char(32)+char(39)+@txtSearch3+char(39)
    END
END
 EXECUTE(@TempSql) 

但是在真正的运行的时候总是报错,说是D层查询需要ZiFuDuan@,但是未提供ZiFuDuan2,这就很明显的说明我的查询语句有错,但是检查了很多遍,我的查询语句真的没有什么错误,于是就找刚鹏解决,结果刚鹏说:你的问题和我的一样,所以他即刻就给我解决了这个问题,改后代码为:
SET NOCOUNT ON;

-- Insert statements for procedure here
set @TempSql= 'SELECT * FROM '+@tableName +' WHERE ' +@cmbZiDuan1+char(32)+@cmbCaoZuoFu1+char(32)+char(39)+@txtSearch1+char(39)
 if (@cmbRealation1 **<>''**)
 BEGIN  
    set @TempSql=@TempSql +@cmbRealation1 +char(32)+ @cmbZiDuan2+char(32)+ @cmbCaoZuoFu2+char(32) +char(39)+ @txtSearch2+ char(39)
    if (@cmbRealation2 **<>''**)
    BEGIN  
        set @TempSql=@TempSql+@cmbRealation2+char(32)+@cmbZiDuan3+char(32)+@cmbCaoZuoFu3+char(32)+char(39)+@txtSearch3+char(39)
    END
END
 EXECUTE(@TempSql) 

Nothing

Nothing就相当于c++或c#里面的null,这样可以避免对变量进行不需要的赋值,因为有时候初值也会影响变量的使用。

你可能感兴趣的:(null,Nothing)