空字符串与 NULL

Empty string vs NULL

我有一个 table,其中一些行有一些空白 cells。我尝试使用 IS NULL 函数 select 这样的行。但是查询了select0行。

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 可以分配给任何类型,而不是与 date/numerical 字段不兼容的空字符串。
  • NULL 是一个 UNKNOWN 值,它没有值,与空字符串相反,空字符串是一个值,但是是空值。
  • 据我所知,NULL 不应捕获内存,而空字符串会捕获内存。
  • null = null 将导致 null''='' 将导致 TRUE.

他找不到 NULL 因为它没有值

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

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

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

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

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

注:

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

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

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

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

更多差异:

A LENGTH of NULL 为NULL,A LENGTH of an empty string 为0。 NULL 排在空字符串之前。 COUNT(message) 将计算空字符串但不计算 NULL 您可以使用绑定变量搜索空字符串,但不能搜索 NULL。此查询:

SELECT  *
FROM    mytable 
WHERE   mytext = ?

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

SELECT * FROM mytable WHERE mytext IS NULL

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