首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL ISNULL案例

SQL ISNULL案例
EN

Stack Overflow用户
提问于 2022-07-20 21:41:59
回答 1查看 80关注 0票数 2

有谁能用外行的话向我解释一下,为什么我们要把ISNULL?我对IS NULL有一个理解,但是在这种情况下,我似乎不能把它放在一起,如果你不把它放在一起,会产生什么影响。

UpdateTime指的是某一特定行已使用新信息更新的时间。

示例1:

代码语言:javascript
复制
CASE WHEN ISNULL(DB1.UpdateTime,'') >= ISNULL(DB2.UpdateTime,'') THEN ISNULL(DB1.UpdateTime,'')
            ELSE DB2.UpdateTime
        END AS UpdateTime
FROM dbo.DB1_Result DB1 INNER JOIN dbo.DB2 DB2
ON DB1.ID = DB2.ID

示例2:

StartTime = 01/01/2022

代码语言:javascript
复制
WHERE
  (ISNULL(DB1.UpdateTime,'') >= @StartTime

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-07-20 21:55:42

SQL使用三元逻辑:true、false和null。null意味着值是未知的,它可能是任何东西。

如果您试图比较任何与null的东西,就会得到null,甚至null。null = anything为空。null <> anything为空。null < anything为空。null > anything也是null

Null既不等于也不等于它自己。null = null为null,null <> null为null。这就是为什么我们编写x is null而不是x = null的原因。

如果你要写

代码语言:javascript
复制
case
when DB1.UpdateTime >= DB2.UpdateTime then
  db1.UpdateTime
else
  db2.UpdateTime
end

如果其中任何一个为空,则DB1.UpdateTime >= DB2.UpdateTime将为空。Case将将其视为false并返回DB2.UpdateTime。如果这两个值都是空的,那么即使DB2.UpdateTime为null,而DB1.UpdateTime为null,也总是会得到它。

他们不想那样。如果DB2.UpdateTime为null,则希望返回DB1.UpdateTime。如果DB1.UpdateTime为null,则希望返回DB2.UpdateTime。因此,他们使用isnull将null转换为比任何时候都要少的东西;''就是这样做的。

游行示威

注意:ELSE DB2.UpdateTime可能希望ELSE isnull(DB2.UpdateTime, '')THEN ISNULL(DB1.UpdateTime,'')保持一致。

注意: isnull是Server扩展。SQL标准是合并的。

注意:''不是时间戳。它碰巧工作,但其他SQL服务器将拒绝它。1900-01-01会更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73058415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档