【问题标题】:How to compare fields with Null values in Access如何在 Access 中比较具有 Null 值的字段
【发布时间】:2020-09-18 18:17:23
【问题描述】:

我有一个查询,它查看一个表字段并匹配第二个表的字段。它会查看字段是否彼此不匹配。如果不匹配,则第二个表的字段必须替换第一个表的字段。我有这个工作,除非两个表字段中的任何一个都有空值。我尝试在第一个表上使用 isNull(),它确实选择了不为空的值,但是如果我将相同的函数应用于第二个表,我将一无所获。

UPDATE [NAVAIR Deficiencies] INNER JOIN NAVAIR_Deficiencies_Temp ON [NAVAIR Deficiencies].[Unique Deficiency Code] = NAVAIR_Deficiencies_Temp.[Unique Deficiency Code] SET [NAVAIR Deficiencies].[Hull Q] = [NAVAIR_Deficiencies_Temp]![Hull Q], NAVAIR_Deficiencies_Temp.Changed = True
WHERE ((IsNull([NAVAIR Deficiencies]![Hull Q])<>[NAVAIR_Deficiencies_Temp]![Hull Q]));

【问题讨论】:

    标签: sql ms-access-2010 where-clause sql-null


    【解决方案1】:

    你正在经历null &lt;&gt; null的事实。

    可以使用IsNull() 解决此问题,如果您能够定义一个从不出现在两列中的字符串值:

    IsNull([NAVAIR Deficiencies]![Hull Q], '§§§§') 
        <> IsNull([NAVAIR_Deficiencies_Temp]![Hull Q], '§§§§')
    

    这将两个空值视为相等,并认为空值不等于任何非空值。

    或者,您可以使用布尔逻辑枚举所有可能的情况

    [NAVAIR Deficiencies]![Hull Q]) <> [NAVAIR_Deficiencies_Temp]![Hull Q]
    or ([NAVAIR Deficiencies]![Hull Q] is null and [NAVAIR_Deficiencies_Temp]![Hull Q] is not null)
    or ([NAVAIR Deficiencies]![Hull Q] is not null and [NAVAIR_Deficiencies_Temp]![Hull Q] is null)
    

    用否定表示可能更简单:

    not (
        [NAVAIR Deficiencies]![Hull Q]) = [NAVAIR_Deficiencies_Temp]![Hull Q]
        or ([NAVAIR Deficiencies]![Hull Q] is null and [NAVAIR_Deficiencies_Temp]![Hull Q] is null)
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多