【发布时间】:2019-12-25 19:33:22
【问题描述】:
我有一个表格,其中有一列包含存储为文本的 3 位邮政编码,其中一些存储为 2 位邮政编码,因为缺少前导零。我想为 2 位数的拉链添加缺少的前导零。
我尝试了下面的查询,但有很多错误,结果不准确。是否应该使用 if 语句来检查长度是否为 2 个字符然后与 0 连接?还是其他方式?
这是我尝试过的:
Update TABLE set ZIPS = string(3 - len(ZIPS),"0")
我收到以下错误消息:
由于类型转换失败,MS Access 未更新 1930 个字段,由于键违规,0 条记录,由于锁违规,0 条记录,o 由于验证规则违规。
【问题讨论】:
-
Update TABLE set ZIPS = ZIPS & "0" WHERE Len(ZIPS) = 2. 先备份当前数据,先运行SELECT语句检查是否返回预期数据:SELECT ZIPS FROM TABLE WHERE Len(ZIPS) = 2
-
其实,
ZIPS = "0" & ZIPS WHERE Len(ZIPS)=2。如果要使用 String():ZIPS = String(3 - len(ZIPS),"0") & ZIPS. -
@June,正确的。我混淆了尾随和领先。不明白为什么这个问题被关闭了。似乎 Stackoverflow 又变得更加“粗鲁”了。
-
我也没有。我提名重新开放。
-
我明白它为什么关闭了,它没有提供minimal reproducible example。对于类型转换失败,应提供表定义,以及是否存在空值。此外,提供的查询会将字段设置为仅为零而不是添加零,这很奇怪