Sql 为什么column=NULL不返回行?
可能重复: 如果生成查询以在表MyTab中插入列年龄、性别、出生日期、ID的数据Sql 为什么column=NULL不返回行?,sql,null,Sql,Null,可能重复: 如果生成查询以在表MyTab中插入列年龄、性别、出生日期、ID的数据 INSERT INTO MyTab VALUES (22, '', '', 4) “性别和出生日期”列中的值是多少? 它是空的吗 如果值为空,则- SELECT * FROM MyTab WHERE Sex=NULL 上面的查询给出了没有选择行的输出为什么 如果值不为NULL,则-- SELECT * FROM Mytab WHERE Sex IS NULL 上面的查询给出了如何从 对Null如何
INSERT INTO MyTab
VALUES (22, '', '', 4)
“性别和出生日期”列中的值是多少? 它是空的吗 如果值为空,则-
SELECT * FROM MyTab
WHERE Sex=NULL
上面的查询给出了没有选择行的输出为什么
如果值不为NULL,则--
SELECT * FROM Mytab
WHERE Sex IS NULL
上面的查询给出了如何从
对Null如何工作的误解是错误的
大量错误的原因
在SQL代码中,两者都在ISO标准SQL中
特定SQL语句中的
真实世界支持的方言
数据库管理系统。这些
错误通常是错误的结果
Null和0之间的混淆
零或空字符串字符串
长度为零的值,
在SQL中表示为。空是
由ISO SQL标准定义为
与空字符串不同
但是,数值为0。
而Null则表示没有
任何值、空字符串和
数字零都代表实际值
价值观
也来自
禁用“设置ANSI_NULLS”时,等于
=且不等于比较
运算符不遵循SQL-92
标准使用
其中column_name=NULL返回
列\u name中具有空值的行。
使用WHERE的SELECT语句
column\u name NULL返回行
在列中使用非空值。在里面
此外,使用
其中列名称XYZ\u值返回
不是XYZ值的所有行和
它们不是空的
NULL是SQL中表示缺少数据的特殊值。因此,您不能执行以下查询:
SELECT fields FROM table WHERE column = NULL
NULL不能与任何东西进行比较,包括NULL本身。相反,您需要:
SELECT fields FROM table WHERE column IS NULL
然而,在你的例子中,你实际上是在Sex和DOB中插入了一个空值。
并且空值不为NULL。您必须查询:
SELECT fields FROM table WHERE column = ''
NULL意味着没有数据,甚至不是空的或空的东西,所以Column=NULL不起作用,尽管Column为NULL应该返回该列为NULL的行。但是您正在插入值,因此与NULL比较不会返回任何行。-p>-它的意思是空字符串。如果要插入NULL,则需要使用
INSERT INTO MyTab
VALUES (22, '', NULL, 4)
正如其他人所说,第一个查询不返回任何输出,因为您不能使用equals运算符检查NULL。第二个查询更令人费解——我唯一的猜测是您使用的是Oracle,它将空字符串视为空字符串
关于Sex和DOB字段中的值的问题的答案取决于这些字段的类型和您正在使用的数据库引擎。NULL并不等同于任何东西。So=NULL总是返回false。这就是为什么有一种特殊的语法来测试空值。对于所有ANSI SQL数据库都是这样。Sex和DOB列中的值是多少?它是空的吗?依赖于RDBMS。在Oracle中,是的,它将是空的。在SQL Server中,如果没有,则该值将是空字符串。