【问题标题】:isnull function vs IS NULLisnull 函数与 IS NULL
【发布时间】:2017-12-04 06:33:31
【问题描述】:

作为更广泛的 sql 脚本中 case 语句的一部分,我有以下内容:

当 KWB.ASYCONDTYPE IN ('CIVIL','CIVIL2') 并且 KWB.CIVCONDGRADE 为 null THEN 'NO CIVIL CG'

这会将 1405 条记录的字段设置为“NO CIVIL CG”

当 KWB.ASYCONDTYPE IN ('CIVIL','CIVIL2') AND ISNULL(KWB.CIVCONDGRADE,'') = '' THEN 'NO CIVIL CG'

这将为 1410 条记录设置字段,这似乎是正确的答案, 因为第一个实例中未设置的 5 个字段具有 ASYCONDTYPE = 'CIVIL' 并且 CIVCONDGRADE 确实为 NULL

有点担心,因为我希望它们产生相同的结果,如果不是用于 excel 过滤,它可能会被忽视。

谁能提供解释,或者至少我可以在数据集或数据库中检查以使我了解发生了什么?

【问题讨论】:

    标签: null isnull


    【解决方案1】:

    这应该是因为您有 1405 条记录,其中“KWB.CIVCONDGRADE”实际上为 NULL,而 5 条记录“KWB.CIVCONDGRADE”不为 NULL,而只是一个空字段。

    尝试使用此查询检查是否有 5 条记录:

    WHEN KWB.ASYCONDTYPE IN ('CIVIL','CIVIL2') AND KWB.CIVCONDGRADE = '' THEN 'NO CIVIL CG'
    

    【讨论】:

    • 想到了,但是没有,它们是空的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2018-08-08
    • 2020-05-28
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多