Sql 空字符串vs NULL

Sql 空字符串vs NULL,sql,sql-server,null,cells,Sql,Sql Server,Null,Cells,我有一个表格,其中一些行有一些空白的单元格。我尝试使用IS NULL函数选择这样的行。但是查询选择0行 select * from zzz_fkp_registration_female where fname is null; (0 row(s) affected) 现在我将查询更改为: select * from zzz_fkp_registration_female where fname is null or fname =''; 我得到了预期的结果 为什么NULL不给出结果?由于单

我有一个表格,其中一些行有一些空白的
单元格
。我尝试使用IS NULL函数选择这样的行。但是查询选择0行

select * from zzz_fkp_registration_female where fname is null;
(0 row(s) affected)
现在我将查询更改为:

select * from zzz_fkp_registration_female where fname is null or fname ='';
我得到了预期的结果


为什么NULL不给出结果?由于单元格为空,因此
之间的区别是空的。请解释。

它们之间的一些区别:

  • NULL
    可以分配给任何类型,而不是与日期/数字字段不兼容的空字符串
  • NULL
    是一个未知值,它没有值,而不是空字符串,空字符串是一个值,而是一个空字符串
  • 据我所知,
    NULL
    不应该捕获内存,而空字符串则会捕获内存
  • null=null
    将导致
    null
    ,而
    '='
    将导致
    TRUE

    • 他找不到NULL,因为它没有值

      空字符串是一个值,但它是空的


      只有当它是一个可以与另一个值进行比较的值时,才能按如下方式修改查询:

      select * from zzz_fkp_registration_female where isnull(fname,'') = '';
      
      此查询将生成所有空白单元格以及具有空值的单元格

      注:

    • 空值表示缺少未知数据
    • 空白数据是在输入过程中作为空白输入的实际数据
      • Null表示缺少值。空字符串是一个值,但只是空的

      • Null对于数据库是特殊的

      • Null没有边界,它可以用于数据库中的字符串、整数、日期等字段
      • NULL没有分配任何内存,具有NULL值的字符串只是指向内存中任何地方的指针。但是,尽管存储在内存中的值为“”,但会将Empty分配给内存位置
      通过使用NULL,您可以区分“不放数据”和“放空数据”

      还有一些区别:

      NULL的长度为NULL,空字符串的长度为0。 空值排序在空字符串之前。 COUNT(message)将对空字符串计数,但不会为null 可以使用绑定变量搜索空字符串,但不能搜索空字符串。此查询:

      SELECT  *
      FROM    mytable 
      WHERE   mytext = ?
      
      无论从客户端传递什么值,mytext中都不会匹配NULL。要匹配空值,必须使用其他查询

      选择*
      从mytable
      
      如果mytext为NULL

      是因为包含NULL的单元格和空单元格是两种不同的东西。
      i、 e.->NULL与“”或“”不同。

      在sql中,NULL被定义为NULL,并且“”表示某个空值“”空字符串:我们可以说没有值。但是NULL意味着我们不能说没有价值。这意味着可能有价值,但它是未知的。这就是NULL与空字符串不同的原因。不允许零长度字符串作为名称(具有约束或触发器)。在这种情况下使用NULL。NULL为NULL,blank为空…NULL表示它包含“NULL”作为值,“”表示不包含任何值。通过选择cell为NULL,并且通过cell='',实际上,
      NULL=NULL
      将导致未知,请参阅。