空字符串与NULL

时间:2016-11-17 09:55:01

标签: sql sql-server null cells

我有一张表,其中某些行有一些空白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''之间有什么区别。请解释一下。

5 个答案:

答案 0 :(得分:13)

它们之间存在一些差异:

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

答案 1 :(得分:2)

  • Null缺少值。空字符串是一个值,但只是空的。

  • Null对数据库来说是特殊的。

  • Null没有边界,可以用于数据库中的字符串,整数,日期等字段。
  • NULL没有分配任何内存,具有NUll值的字符串只是指向内存中无处的指针。但是,尽管存储在内存中的值为“”。
  • ,但是空IS被分配到内存位置

通过使用NULL,您可以区分“put no data”和“put empty data”。

更多差异:

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

SELECT  *
FROM    mytable 
WHERE   mytext = ?

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

SELECT * FROM mytable WHERE mytext IS NULL

答案 2 :(得分:1)

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

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

只有它的值可以与其他值进行比较

答案 3 :(得分:1)

您可以按如下方式修改查询:

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

此查询将导致所有空白单元格以及具有空值的单元格。

注意:

  1. NULL值表示缺少未知数据。
  2. 空白数据是输入时输入为空白的实际数据。

答案 4 :(得分:0)

这是因为包含NULL的单元格和一个空单元格是两个不同的东西。 即-> NULL与“或”不同。