1

我很困惑,关于 Empty、Null 和非 Null 数据库字段值。我有一个选项卡,其中有几个字段包含空/空白数据,其中一些包含 NULL 数据,并包含实际数据。我很困惑Epmyt/Blank和Null数据之间的区别。

请帮我。

谢谢拉维克

4

3 回答 3

1

空或空白通常是指空字符串值,长度=0 个字符。Null 意味着没有价值,甚至不是空的。

于 2012-12-10T19:02:20.813 回答
0

NULL 是一个数据库指示符,它指定数据库中的值缺失或不确定。空字符串是长度为零的 varchar 字符串。

当您选择值时,它们可能相同也可能不同。例如,SQL Server Management Studio 将 NULL 值导出为“NULL”而不是空白字符串。

NULL 遵循一些非常基本的比较规则,许多人认为这些规则违反直觉。任何比较操作——除了is null——返回假。特别是,以下两个返回 false:

where NULL = NULL
where NULL <> NULL

这也适用于具有 NULL 值的列因此,当val包含 NULL 值时,它们都返回 false:

where val = val
where val <> val

空白/空字符串只是长度为 0 的可变长度字符串的值,通常表示为 ''。以下确实返回 true:

where '' = ''
where val = val                  -- given that val is ''

一个复杂的问题是某些数据库将 NULL 值视为零长度字符串。甲骨文浮现在脑海中。但是,这不是符合 ANSI 的行为。

于 2012-12-10T19:46:56.897 回答
0

NULL 与空值的不同之处在于 NULL,您不确定该值是否为空。这对您的数据库有真正可衡量的影响。这里有些例子:

  • LEN()一个空的 varchar 字段的值为 0。一个LEN()NULL 字段的值仍然是 NULL……你不知道这个字段有多大。

  • 与它们自身 ( ) 相比的两个空字段'' = ''为真。您不知道两个 NULL 字段是否相等,因此 ( NULL = NULL) 会导致 NULL。

  • COALESCE('', ... )空字段的结果为空字段。NULL 字段的COALESCE(NULL, ... )下降到下一个值。

这样的例子还有很多。NULL 并不意味着空。NULL 表示“我不知道”。

于 2012-12-10T22:56:53.307 回答