相关疑难解决方法(0)

IS NULL和= NULL之间有什么区别吗?

我很惊讶地看到IS NULL和= NULL在select查询中产生不同的结果.他们之间有什么区别?什么时候用.如果你能详细解释我,我会很高兴的.

sql sql-server sql-server-2005

42
推荐指数
3
解决办法
2万
查看次数

为什么null不等于null false

我正在读这篇文章: 在SQL中获取null == null

并且一致认为,当尝试测试两个(可为空)sql列之间的相等性时,正确的方法是:

where ((A=B) OR (A IS NULL AND B IS NULL))
Run Code Online (Sandbox Code Playgroud)

当A和B为NULL时,(A = B)仍然返回FALSE,因为NULL不等于NULL.这就是需要额外检查的原因.

在测试不平等时呢?根据上面的讨论,它让我认为,为了测试不平等,我需要做一些像:

WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
Run Code Online (Sandbox Code Playgroud)

但是,我注意到这没有必要(至少在informix 11.5上没有),我可以这样做:

where (A<>B)
Run Code Online (Sandbox Code Playgroud)

如果A和B为NULL,则返回FALSE.如果NULL不等于NULL,那么这不应该返回TRUE吗?

编辑
这些都是很好的答案,但我认为我的问题有点模糊.请允许我改写一下:

鉴于A或B都可以为NULL,是否足以检查它们的不等式

where (A<>B)
Run Code Online (Sandbox Code Playgroud)

或者我需要明确检查它:

WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
Run Code Online (Sandbox Code Playgroud)

请参阅此主题以获得此问题的答案.

sql database null nullable

21
推荐指数
3
解决办法
3万
查看次数

标签 统计

sql ×2

database ×1

null ×1

nullable ×1

sql-server ×1

sql-server-2005 ×1