Sql 为什么不是';IIF语句真实部分在尝试格式化邮政编码时正确计算?

Sql 为什么不是';IIF语句真实部分在尝试格式化邮政编码时正确计算?,sql,ms-access,Sql,Ms Access,我的一个表中有一个ZipCode字段 大多数值都是典型的5位邮政编码,但其中一些值有破折号和额外的4位数字。该字段设置为文本数据类型 我的问题是,我希望在适当的时候保留前导零,但不截断末尾有额外4位数字的邮政编码 这些值当前为以下类型之一(所有文本数据类型): 5429 34567 21134-8733 预期结果应如下: 05429 34567 21134-8733 我已经创建了下面的查询。它工作不正常,只返回字段的原始值 UPDATE [Export file2] SET [Expo

我的一个表中有一个
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]);
更新[导出文件2]
设置[Export file2]。ZipCode=

IIf(Len([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]);

UPDATE[Export file2]SET[Export file2].ZipCode=IIf(Len([Export file2].[ZipCode])如果您能提供正在处理的每种数据类型的示例以及每种数据的预期结果,这将非常有帮助

假设我正确理解了您希望实现的目标,您可以按以下方式使用
Right
功能:

更新[导出文件2]
设置[Export file2]。ZipCode=
IIf
(
Len([Export file2].[ZipCode])<6,
右(“00000”和[Export file2]。[ZipCode],5),
[导出文件2]。[ZipCode]
)
或者,如果您还希望确保“其他”类型的邮政编码也具有适当的前导零(假设该值的长度始终最多为10个字符),则以下内容可能是合适的:

更新[导出文件2]
设置[Export file2]。ZipCode=
右(“00000”和[Export file2].[ZipCode],IIf(Len([Export file2].[ZipCode])<6,5,10)

当前值为以下值之一(所有文本数据类型):5429 34567 21134-8733预期结果如下:05429 34567 21134-8733@Chuck0185谢谢-我已经用这些额外的信息更新了您的问题。我建议的解决方案应该根据您的示例按要求执行。