sql 中 变量 = null 和 变量 is null 有什么区别

如题:declare@avarchar(20)selectcasewhen@a=nullthen1endasres,casewhen@aisnullthen1endasr... 如题:
declare @a varchar(20)
select
case when @a = null
then 1 end as res,
case when @a is null
then 1 end as res1
查询结果:
res res1
NULL 1
为什么 res和res1不同呢
展开
 我来答
百度网友e1d2d2ca5
2008-05-17 · TA获得超过100个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:153万
展开全部
你这是数据库选项 ANSI_NULLS 的设置问题,请使用下面代码进行测试
========================================
declare @a varchar(20)

set ANSI_NULLS on
select case when @a = null then 1 end as res,case when @a is null then 1 end as res1

set ANSI_NULLS off
select case when @a = null then 1 end as res,case when @a is null then 1 end as res1
========================================
ANSI_NULLS 在ON和OFF时,比较方式是不一样的.而SQL 默认ANSI_NULLS 状态是ON
下面是空值比较的说明
========================================
比较空值
比较空值时必须小心。比较行为取决于选项 SET ANSI_NULLS 的设置。

当 SET ANSI_NULLS 为 ON 时,如果比较中有一个或多个表达式为 NULL,则既不输出 TRUE 也不输出 FALSE,而是输出 UNKNOWN。这是因为,未知值不能与其它任何值进行逻辑比较。这种情况发生在一个表达式与 NULL 单词进行比较,或者两个表达式相比,而其中一个表达式取值为 NULL 时。例如,当 ANSI_NULLS 为 ON 时,以下比较总是输出 UNKNOWN:

ytd_sales > NULL

只要变量包含 NULL 值,下列比较也输出 UNKNOWN:

ytd_sales > @MyVariable

Transact-SQL 支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE。通过设置 ANSI_NULLS OFF 可将该选项激活。当 ANSI_NULLS 为 OFF 时,如果 ColumnA 包含空值,则比较操作 ColumnA = NULL 返回 TRUE;如果 ColumnA 除包含 NULL 外还包含某些值,则比较操作返回 FALSE。此外,两个都取空值的表达式的比较也输出 TRUE。当 ANSI_NULLS 设置为 OFF 时,SELECT 语句将返回 Customer 表中所有 Region 为空值的行:

SELECT CustomerID, CompanyName, Region
FROM Northwind.dbo.Customers
WHERE Region = NULL

=====================================================
更详细的说明参考SQL的帮助,索引关键字:"空值:比较搜索条件"
agx2004
推荐于2018-04-10 · TA获得超过4849个赞
知道小有建树答主
回答量:1708
采纳率:0%
帮助的人:889万
展开全部
在定义中说,空值不与任何值相等。因此不能使用 = null 做判断。在Sql语句中,唯一可以使用 = null的就是update语句中的赋值语句,其他地方都不可以使用。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tingtingsummer
2008-05-16 · TA获得超过335个赞
知道小有建树答主
回答量:556
采纳率:0%
帮助的人:402万
展开全部
对于null的字段,必须用is null来判断。
select * from student where name is null;
这样 不能才能选出那些name列是空的。图过用name=null则不行
update student set name=null where id=1;
上面语句可以把name列设置为空值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AlmostLoverLSs
2017-11-08 · TA获得超过3896个赞
知道小有建树答主
回答量:2.2万
采纳率:22%
帮助的人:2286万
展开全部
啥 类型 (氵斿戏)都有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式