sql-server - 如果一个日期为 NULL,则比较日期
问题描述
为什么我从这两个样本中得到不同的结果?
DECLARE @validFrom DATE
DECLARE @validTo DATE
SET @validFrom = GETDATE()
SET @validTo = NULL
IF (@validFrom = @validTo)
PRINT 'same'
ELSE
PRINT 'not same'
结果:不一样
但是这段代码不起作用:
DECLARE @validFrom DATE
DECLARE @validTo DATE
SET @validFrom = GETDATE()
SET @validTo = NULL
IF (@validFrom <> @validTo)
PRINT 'not same'
ELSE
PRINT 'same'
结果:一样
解决方案
您不能将 aNULL
与常规的等式/不等式运算符进行比较 - 这将始终NULL
作为结果返回,这被解释为“未定义”或“假”。这是标准SQL 行为*。
因此检查
IF (@validFrom <> @validTo)
永远是假的。
您只能NULL
使用IS NULL
or运算符进行检查IS NOT NULL
- 但不能使用=
or <>
or <
or or<=
或任何这些标准运算符。
官方文档中的更多详细信息:处理空值
推荐阅读
- ios - ionic ios build wkwebview 无法启动,卡在启动画面
- c# - Netsuite:如何将采购订单链接到销售订单
- itext7 - 阅读pdf I text7时解码Identity-h嵌入字体文本
- javascript - Angular 9 onclick 功能未定义
- node.js - 无服务器框架无法识别 tsconfig 的路径
- php - 在 PHP 7.4+ 中,当父/超类的参数无类型时,相反的参数是否有意义?
- reactjs - 将道具从页面传递到 Nextjs 中的组件
- qt - 在 QT 的 Signals & Slots 字段中,当我在“实时”中求解动态方程时,我应该在连接命令中输入什么信号?
- html - 可以用 HTML 和 CSS 实现相当于负填充的效果吗?
- go - 在 Go 中如何测试调用另一个 API 端点的服务?