有谁能用外行的话向我解释一下,为什么我们要把ISNULL?我对IS NULL有一个理解,但是在这种情况下,我似乎不能把它放在一起,如果你不把它放在一起,会产生什么影响。
UpdateTime指的是某一特定行已使用新信息更新的时间。
示例1:
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
WHERE
(ISNULL(DB1.UpdateTime,'') >= @StartTime谢谢!
发布于 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的原因。
如果你要写
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会更好。
https://stackoverflow.com/questions/73058415
复制相似问题