我很困惑,关于,空,空和非空数据库字段值。 我有一个选项卡,其中有几个字段包含空/空数据,其中一些包含NULL数据,并包含实际数据。 我很困惑Epmyt / Blank和Null数据之间的区别。
请帮帮我。
由于 Ravik
答案 0 :(得分:1)
空或空白通常是指空字符串值,长度= 0个字符。 Null意味着没有价值,甚至不是空的。
答案 1 :(得分:0)
NULL是一个数据库指示符,指定数据库中的值丢失或不确定。空字符串是零长度varchar字符串。
选择值时,它们可能相同也可能不同。例如,SQL Server Management Studio将NULL值导出为“NULL”而不是空字符串。
NULL遵循一些非常基本的比较规则,许多人发现违反直觉。任何比较操作 - is null
除外 - 都返回false。特别是,以下两个返回false:
where NULL = NULL
where NULL <> NULL
这适用于具有NULL值的列所以当val
包含NULL值时,这些都返回false:
where val = val
where val <> val
空格/空字符串只是长度为0的可变长度字符串的值,通常表示为''。以下内容确实返回:
where '' = ''
where val = val -- given that val is ''
一个复杂因素是某些数据库将NULL值视为零长度字符串。想到了Oracle。但是,这不符合ANSI标准。
答案 2 :(得分:0)
NULL与NULL中的空值不同,您不确定该值是否为空。这对您的数据库有实际可衡量的影响。以下是一些例子:
空varchar字段的LEN()
为0. NULL字段的LEN()
仍为NULL ...您不知道该字段有多大。
与自己('' = ''
)相比较的两个空字段为真。您不知道两个NULL字段是否相等,因此(NULL = NULL
)会导致NULL。
空字段的COALESCE('', ... )
会产生空字段。 NULL字段的COALESCE(NULL, ... )
会转到下一个值。
还有更多这样的例子。 NULL 不表示空。 NULL表示“我不知道。”