栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL:为什么在此where子句中过滤掉NULL值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL:为什么在此where子句中过滤掉NULL值?

从Wikipedia条目上的NULL:

例如,WHERe子句或条件语句可能会将列的值与常量进行比较。通常错误地认为,如果该字段包含Null,则缺失值将“小于”或“不等于”常量,但实际上,此类表达式返回Unknown。下面是一个示例:

-- Rows where num is NULL will not be returned,-- contrary to many users' expectations.SELECt * FROM sometable WHERe num <> 1;

基本上,NULL和其他 任何 东西之间的 任何 比较(无论是=还是<>)都将是不正确的。

作为另一参考,MSDN T-SQL页面上

<>
指出:

比较两个表达式(比较运算符)。比较非空表达式时,如果左操作数不等于右操作数,则结果为TRUE;否则,结果为TRUE。否则,结果为FALSE。如果一个或两个操作数均为NULL,请参见SET
ANSI_NULLS(Transact-SQL)。

该SET ANSI_NULLS然后页指出:

当SET ANSI_NULLS为ON时,即使column_name中包含空值,使用WHERe column_name =
NULL的SELECT语句也将返回零行。即使column_name中包含非空值,使用WHERe column_name <>
NULL的SELECT语句也将返回零行。

当SET ANSI_NULLS设置为ON时,所有与空值的比较都将得出UNKNOWN。当SET
ANSI_NULLS为OFF时,如果数据值为NULL,则将所有数据与null值的比较评估为TRUE。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441539.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号