我的一个表中有一个ZipCode
字段。
大多数值是典型的5位邮政编码,但是其中一些带有破折号和另外的4位。该字段设置为文本数据类型。
我的问题是,我想在适当的时候保留前导零,而不是截断末尾有另外4位数字的邮政编码。
当前值为以下值之一(所有文本数据类型):
预期结果应为以下内容:
我创建了以下查询。它无法正常工作,仅返回该字段的原始值。
UPDATE [Export file2]
SET [Export file2].ZipCode =
IIf(Len([Export file2].[ZipCode])<6,Format([Export file2].[ZipCode],"00000"),[Export file2].[ZipCode]);
答案 0 :(得分:1)
格式化不会格式化文本字段,因此请首先将数值设置为数字:
UPDATE [Export file2] SET [Export file2].ZipCode = IIf(Len([Export file2].[ZipCode])<6,Format(Val([Export file2].[ZipCode]),"00000"),[Export file2].[ZipCode]);
答案 1 :(得分:0)
如果您可以提供一个示例,说明所使用的每种数据类型以及每种数据的预期结果。
假设我已正确理解您要实现的目标,则可以通过以下方式使用Right
函数:
UPDATE [Export file2]
SET [Export file2].ZipCode =
IIf
(
Len([Export file2].[ZipCode]) < 6,
Right("00000" & [Export file2].[ZipCode],5),
[Export file2].[ZipCode]
)
或者,如果您还想确保邮政编码的“其他”类型也具有适当的前导零(假设值始终始终为10个字符),则可能以下是合适的:
UPDATE [Export file2]
SET [Export file2].ZipCode =
Right("00000" & [Export file2].[ZipCode], IIf(Len([Export file2].[ZipCode]) < 6,5,10)