如果您生成一个查询以在表"MyTab"中插入数据列--- Age,Sex,DOB,ID
INSERT INTO MyTab
VALUES (22, '', '', 4)
Run Code Online (Sandbox Code Playgroud)
Sex&DOB专栏的价值是多少?它是NULL吗?
如果值为NULL则---
SELECT * FROM MyTab
WHERE Sex=NULL
Run Code Online (Sandbox Code Playgroud)
上面的查询给出了输出----没有选择行---为什么?
如果值不为NULL则---
SELECT * FROM Mytab
WHERE Sex IS NULL
Run Code Online (Sandbox Code Playgroud)
上面的查询给出了输出----如何?
Nul*_*ion 11
NULL是SQL中的一个特殊值,表示缺少数据.因此,您无法执行以下查询:
SELECT fields FROM table WHERE column = NULL
Run Code Online (Sandbox Code Playgroud)
NULL不能与任何东西相比,包括NULL它自己.相反,你需要:
SELECT fields FROM table WHERE column IS NULL
Run Code Online (Sandbox Code Playgroud)
但是在你的情况下,你真的在Sex和中插入一个空值DOB.
空值不是NULL.您必须查询:
SELECT fields FROM table WHERE column = ''
Run Code Online (Sandbox Code Playgroud)
对 Null 工作原理的误解是 SQL 代码中出现大量错误的原因,无论是在 ISO 标准 SQL 语句中还是在实际数据库管理系统支持的特定 SQL 方言中。这些错误通常是由于 Null 与 0(零)或空字符串(长度为零的字符串值,在 SQL 中表示为 '')混淆的结果。然而,ISO SQL 标准将 Null 定义为不同于空字符串和数值 0。Null 表示不存在任何值,而空字符串和数字零都表示实际值。
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵循 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中具有非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句将返回所有非 XYZ 值且不为 NULL 的行。