为什么在尝试格式化邮政编码时,IIF 语句 TRUE 部分无法正确评估?



我的一个表中有一个ZipCode字段。

大多数值是典型的5个数字邮政编码,但是其中一些值具有破折号和4位数字。该字段设置为文本数据类型。

我的问题是,我想在适当的时候保留领先的零,而不是截断在末尾具有额外4位数字的邮政编码。

这些值当前是以下(所有文本数据类型)之一:

  • 5429
  • 34567
  • 21134-8733

预期的结果应为以下:

  • 05429
  • 34567
  • 21134-8733

我创建了以下查询。它无法正常工作,它只是返回字段的原始值。

UPDATE [Export file2] 
SET [Export file2].ZipCode = 
IIf(Len([Export file2].[ZipCode])<6,Format([Export file2].[ZipCode],"00000"),[Export file2].[ZipCode]);

格式不会格式化文本字段,因此首先使值数字:

UPDATE [Export file2] SET [Export file2].ZipCode = IIf(Len([Export file2].[ZipCode])<6,Format(Val([Export file2].[ZipCode]),"00000"),[Export file2].[ZipCode]);

,如果您可以包含与您正在使用的每种类型数据的示例以及每个类型的结果。

假设我已经正确理解了您想要实现的目标,则可以通过以下方式使用Right功能:

UPDATE [Export file2] 
SET [Export file2].ZipCode = 
IIf
(
    Len([Export file2].[ZipCode]) < 6,
    Right("00000" & [Export file2].[ZipCode],5),
    [Export file2].[ZipCode]
)
另外以下是适当的:
UPDATE [Export file2] 
SET [Export file2].ZipCode = 
Right("00000" & [Export file2].[ZipCode], IIf(Len([Export file2].[ZipCode]) < 6,5,10)

最新更新