sql - 在 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 和 = 功能相同吗?
解决方案
你想知道的都可以在这里找到:
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
,这就是IS
和IS NOT
.
推荐阅读
- typescript - 未找到本地项目模块
- laravel - Laravel - 如何显示所见即所得并截断字符串
- c++ - 英特尔 MKL 就地实到实转换不可能?
- typescript - TypeScript:对象可能为“空”。窗口打开
- python - matplotlib 设置 ylim 在绘图周围显示较大的边距
- java - 用于将 UTC 转换为 EST 的 JUnit 测试用例
- apache-spark - 使用火花写入强制模式
- laravel - 无法通过 composer 安装 JWT
- entity-framework-core - 在 .NET Core 3.x 中使用 Autofac.AspNetCore.Multitenant 时如何在启动时执行数据库迁移?
- sql-server - SQL Server 索引——在复合键字段上创建非聚集索引有什么好处?