首页 > 解决方案 > 在 SQL 中,在 where 语句中返回值时,“IS”和“=”有区别吗?

问题描述

我目前正在使用 Codecademy 学习 SQL,我很好奇使用“IS”或“=”之间是否有区别。

在本课中,我编写了以下代码:

SELECT *
FROM nomnom
WHERE neighborhood IS 'Midtown'
  OR neighborhood IS 'Downtown'
  OR neighborhood IS 'Chinatown';

运行得非常好。我总是喜欢看答案,看看我做错了什么或者可以改进。答案有这个代码:

SELECT *
FROM nomnom
WHERE neighborhood = 'Midtown'
   OR neighborhood = 'Downtown'
   OR neighborhood = 'Chinatown'; 

IS 和 = 功能相同吗?

标签: sqlsqlite

解决方案


你想知道的都可以在这里找到:

IS 和 IS NOT 运算符的工作方式与 = 和 != 类似,除非其中一个或两个操作数为 NULL。在这种情况下,如果两个操作数都为 NULL,则 IS 运算符的计算结果为 1(真),而 IS NOT 运算符的计算结果为 0(假)。如果一个操作数为 NULL 而另一个不是,则 IS 运算符的计算结果为 0(假)并且 IS NOT 运算符为 1(真)。IS 或 IS NOT 表达式不可能计算为 NULL。运算符 IS 和 IS NOT 与 = 具有相同的优先级。

取自:SQL 理解的 SQL 。
重要的部分是:...除非一个或两个操作数为 NULL ...因为当使用=or !=( <>) 和 1(或两个)操作数为 NULL 时,结果也是 NULL NULL,这就是ISIS NOT.


推荐阅读