SQL 的 NOT IN
子句和 NULL 值的细微差别
SQL 中的 NOT IN
子句用于排除与指定列表中的值匹配的行。 然而,此列表中 NULL
值的存在带来了复杂性。
问题:NULL 的意外结果
考虑这些 SQL 查询:
A: SELECT 'true' WHERE 3 IN (1, 2, 3, NULL); B: SELECT 'true' WHERE 3 NOT IN (1, 2, NULL);
查询 A 产生结果,而查询 B 则没有。 这源于 SQL 处理 NULL
比较的方式。 查询 A 检查 3 是否等于列表中的任何 值。 由于 3 等于 3,因此返回结果。
不等于 到 每个 值。启用 ANSI_NULLS(许多系统中的默认设置)后,涉及 的比较结果为 NULL
。 UNKNOWN
既非真亦非假;因此,查询 B 不返回任何行。UNKNOWN
ANSI_NULLS 设置及其影响
禁用 ANSI_NULLS 会改变 比较行为。 关闭 ANSI_NULLS 后,与 NULL
的比较如果值不相等则返回 TRUE,如果相等则返回 FALSE。 因此,查询 B 将返回禁用 ANSI_NULLS 的结果,因为 NULL
的计算结果为 TRUE。3 NOT IN (1, 2, NULL)
理解 NULL 的本质
重要的是要记住 表示未知值。 将 NULL
与任何值进行比较总是会产生 NULL
,因为无法明确确定相等或不相等。当使用带有 UNKNOWN
值的 NOT IN
时,必须预见到潜在的问题,并且应该实施适当的技术(例如显式 NULL
检查或使用 NULL
将 COALESCE
替换为已知值)以实现稳健的查询处理.NULL
以上是NULL 值如何影响 SQL NOT IN 子句的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

如何有效监控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。1.使用mysqladmin查看连接数。2.用SHOWGLOBALSTATUS查看查询数。3.PMM提供详细性能数据和图形化界面。4.MySQLEnterpriseMonitor提供丰富的监控功能和报警机制。

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显着差异,选择时需考虑项目规模和未来扩展性。

在需要高可用性、高级安全性和良好集成性的企业级应用场景下,应选择SQLServer而不是MySQL。1)SQLServer提供企业级功能,如高可用性和高级安全性。2)它与微软生态系统如VisualStudio和PowerBI紧密集成。3)SQLServer在性能优化方面表现出色,支持内存优化表和列存储索引。

mySqlManagesCharacterSetsetSandCollationsyutusututf-8asthEdeFault,允许ConfigurationAtdataBase,table和columnlevels,AndrequiringCarefullageLignmentToavoidMismatches.1)setDefeaultCharactersetTercharactersetEtCollacterSeteTandColletationForAdataBase.2)conformentcollecharactersettersetertersetcollatertersetcollationcollation

MySQL触发器是与表相关联的自动执行的存储过程,用于在特定数据操作时执行一系列操作。1)触发器定义与作用:用于数据校验、日志记录等。2)工作原理:分为BEFORE和AFTER,支持行级触发。3)使用示例:可用于记录薪资变更或更新库存。4)调试技巧:使用SHOWTRIGGERS和SHOWCREATETRIGGER命令。5)性能优化:避免复杂操作,使用索引,管理事务。

在MySQL中创建和管理用户账户的步骤如下:1.创建用户:使用CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';2.分配权限:使用GRANTSELECT,INSERT,UPDATEONmydatabase.TO'newuser'@'localhost';3.修正权限错误:使用REVOKEALLPRIVILEGESONmydatabase.FROM'newuser'@'localhost';然后重新分配权限;4.优化权限:使用SHOWGRA

MySQL适合快速开发和中小型应用,Oracle适合大型企业和高可用性需求。1)MySQL开源、易用,适用于Web应用和中小型企业。2)Oracle功能强大,适合大型企业和政府机构。3)MySQL支持多种存储引擎,Oracle提供丰富的企业级功能。

MySQL相比其他关系型数据库的劣势包括:1.性能问题:在处理大规模数据时可能遇到瓶颈,PostgreSQL在复杂查询和大数据处理上表现更优。2.扩展性:水平扩展能力不如GoogleSpanner和AmazonAurora。3.功能限制:在高级功能上不如PostgreSQL和Oracle,某些功能需要更多自定义代码和维护。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

Dreamweaver CS6
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!