空字符串vs 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 ='';

我得到了期望的结果。

为什么is NULL不给出结果?IS NULL''的区别是什么,因为单元格是空的。请解释。

它们之间的一些区别:

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

您可以将您的查询修改如下:

select * from zzz_fkp_registration_female where isnull(fname,'') = '';

此查询将产生所有空白单元格以及空值单元格。

注意:

  1. NULL值表示缺失未知数据。
  2. 空白数据是输入时作为空白输入的实际数据。
  • Null表示没有值。空字符串是一个值,但只是空的。

  • Null是数据库的特殊值

  • Null没有边界,它可以用于数据库中的字符串、整数、日期等字段。
  • NULL没有分配任何内存,NULL值的字符串只是一个指针,它指向内存中的任何地方。然而,Empty被分配给一个内存位置,尽管存储在内存中的值是"。

使用NULL可以区分"put no data"one_answers"put empty data"。

更多差异:

LENGTH为NULL为NULL, LENGTH为空字符串为0。null在空字符串之前排序。COUNT(message)将计算空字符串,但不计算null您可以使用绑定变量搜索空字符串,但不能搜索NULL。这个查询:

SELECT  *
FROM    mytable 
WHERE   mytext = ?

永远不会匹配mytext中的NULL,无论您从客户端传递的值是什么。要匹配null,必须使用其他查询

SELECT * FROM mytable WHERE mytext IS NULL

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

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

只有当它是一个值,它才能与另一个值比较

这是因为包含NULL的单元格和空单元格是两种不同的东西。即零不一样。->"或"。

最新更新