为什么column = NULL不返回任何行?
可能的重复:
为什么 NULL = NULL 在 SQL Server 中计算结果为 false< /a>
如果生成查询以将数据插入表“MyTab”中的列 --- Age、Sex、DOB、ID,
INSERT INTO MyTab
VALUES (22, '', '', 4)
Sex & 列中的值将是多少?出生日期? 是NULL吗?
如果值为 NULL,那么 ---
SELECT * FROM MyTab
WHERE Sex=NULL
上面的查询给出输出 ---- 没有选择行 --- 为什么?
如果值不为 NULL 那么 ---
SELECT * FROM Mytab
WHERE Sex IS NULL
上面的查询给出输出 ---- 怎么样?
Possible Duplicate:
Why does NULL = NULL evaluate to false in SQL server
If you generate a query to insert the data in table "MyTab" for column --- Age, Sex, DOB, ID
INSERT INTO MyTab
VALUES (22, '', '', 4)
What'll be the value in column Sex & DOB ?
Is it NULL ?
If value is NULL then ---
SELECT * FROM MyTab
WHERE Sex=NULL
above query gives output ---- no rows selected --- why ??
if value is not NULL then ---
SELECT * FROM Mytab
WHERE Sex IS NULL
above query gives the output ---- how ??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
NULL
是 SQL 中的一个特殊值,表示缺少数据。因此,您不能执行如下查询:NULL
不能与任何内容进行比较,包括NULL
本身。相反,您需要:但是在您的情况下,您实际上是在
Sex
和DOB
中插入空值。并且空值不是
NULL
。您必须查询:NULL
is a special value in SQL denoting the absence of data. As such, you cannot do queries like:NULL
cannot be compared to anything, includingNULL
itself. Instead, you'd need:However in your case you are really inserting an empty value in
Sex
andDOB
.And empty value is not
NULL
. You'd have to query for:来自 空 (SQL)
同样来自 SET ANSI_NULLS
From Null (SQL)
Also from SET ANSI_NULLS
'' - 这意味着空字符串。如果你想插入NULL,你需要使用
'' - it`s mean empty string. If you want to insert NULL,you need yo use
NULL 意味着没有数据(甚至不是空白或空的东西),因此 Column = NULL 不会起作用,尽管 Column IS NULL 应该返回该列为 NULL 的行。但是您正在插入 '' 值,因此与 NULL 进行比较不会返回任何行。
NULL means no data (not even blank or empty stuff), so
Column = NULL
is not going to work althoughColumn IS NULL
should return rows with that column as NULL. But you're inserting '' value so comparing with NULL won't return any rows.正如其他人所说,第一个查询不返回任何输出,因为您无法使用等于运算符检查 NULL。第二个查询更令人费解 - 我唯一的猜测是您正在使用 Oracle,它将空字符串视为 NULL。
有关“性别”和“出生日期”字段中的值的问题的答案取决于这些字段的类型以及您正在使用的数据库引擎。
As others said, first query returns no output because you cannot check for NULL with equals operator. The second query is more puzzling - my only guess is that you are using Oracle which treats empty strings as NULLs.
The answer to the question about values in Sex and DOB fields would depend on the type of those fields and database engine you are working with.