这里有一个A表其中ID为主键,E_ID为其中一个字段
表里有两条数据,一条数据E_ID值为3,另一条E_ID为空。使用查询
SELECT * FROM A WHERE E_ID=NULL
查询不到E_ID为空的数据改为SELECT * FROM A WHERE E_ID is NULL查询正常!为什么?
表里有两条数据,一条数据E_ID值为3,另一条E_ID为空。使用查询
SELECT * FROM A WHERE E_ID=NULL
查询不到E_ID为空的数据改为SELECT * FROM A WHERE E_ID is NULL查询正常!为什么?
为什么也不行?
null指对象句柄不存在。
“”只是说明内容为空,本身还是存在的。
什么是对象句柄,“”只是说明内容为空,本身还是存在的。怎么理解?
“”只是说明内容为空,本身还是存在的。
什么是对象句柄,“”只是说明内容为空,本身还是存在的。怎么理解?
如果是设置为null,那需要用到=null
以一张表T的查询为例。 表T存在下面的数据:
RowId Data
--------------
1 'test'
2 Null
3 'test1' 按照ANSI SQL标准,下面的两个查询都不返回任何行:
Query1: select * from T where Data=null
Query2: select * from T where Data<>null
而按照非ANSI SQL标准,查询1将返回第二行,查询2返回1、3行。
ANSI SQL标准中取得Null值的行需要用下面的查询:
select * from T where Data is null
反之则用is not null。由此可见非ANSI SQL标准中Data=Null等同于Data Is Null,Data<>Null等同于Data Is Not Null。 而控制采用那一种规则,需要使用命令SET ANSI_NULLS [ON/OFF]。ON值采用ANSI SQL标准,OFF值采用非标准模式。另外SET ANSI_DEFAULTS [ON/OFF]命令也可以实现标准的切换,只是这个命令控制的是一组符合SQL-92标准的设置,其中就包括Null值的标准。 默认情况下,数据库管理程序(DB-Library)是SET ANSI_NULLS为OFF的。