代码之家  ›  专栏  ›  技术社区  ›  StarSweeper

如何替换整个工作表中的空值,而不知道哪列将具有空值

  •  0
  • StarSweeper  · 技术社区  · 3 年前

    我每个月都会使用Microsoft Access将excel中的数据添加到数据库中。现在,我有一些更新查询,它们在通常包含null的列中查找null,并用空字符串替换它们。

     UPDATE example_excel_sheet SET example_excel_sheet.trouble_column_1 = '', 
     example_excel_sheet.trouble_column_2 = '', example_excel_sheet.trouble_column_3 = '', 
     WHERE (((example_excel_sheet.trouble_column_1)='' Or (example_excel_sheet.trouble_column_1) 
     Is Null) AND ((example_excel_sheet.trouble_column_2)='' Or (example_excel_sheet.trouble_column_2) Is 
     Null) AND ((example_excel_sheet.trouble_column_3)='' Or 
     (example_excel_sheet.trouble_column_3) Is Null));
    

    这个解决方案有两个问题

    请告诉我有更好的方法吗?

    0 回复  |  直到 3 年前
        1
  •  1
  •   June7    3 年前

    如果可以使用Nz(),则字段是否为Null无关紧要。消除WHERE子句并对每个记录运行update。包括所有可能需要更新的列。

    UPDATE example_excel_sheet SET trouble_column_1 = Nz(trouble_column_1,''), trouble_column_2 = Nz(trouble_column_2),''), trouble_column_3 = Nz(trouble_column_3),''), trouble_column_4 = Nz(trouble_column_4),''), trouble_column_5 = Nz(trouble_column_5),'')

    或者为了避免调用VBA函数,请使用IIf并为NULL

    trouble_column_1 = IIf(trouble_column_1 IS NULL, '', trouble_column_1)

    或者使用VBA并运行5个单独的SQL操作语句。