我在Microsoft Access中有一个仅包含数字的文本字段。我不知道这些数字是否以空白字符开头。
我想要做的是,如果字段为'1'我想将其转换为'0001',如果它有'89',那么我想将其转换为'0089',等等。意思是我只是想要使字段的长度保持一致4个字符,并用适当的数字“0”填充数字。
我该怎么做?我可以使用计算的现场方法吗? 如果SQL有一种简单的方法,我可以将数据库转换为SQL。
感谢。
答案 0 :(得分:6)
您可以使用Format()
函数转换数字字符串。 Format()
不关心数字是否以空格开头。
? Format("89","0000")
0089
? Format(" 89","0000")
0089
如果要在查询中以该格式显示这些字段值:
SELECT Format([YourTextField],"0000")
FROM YourTable;
如果您想更改它们的存储方式:
UPDATE YourTable
SET [YourTextField] = Format([YourTextField],"0000");
编辑:@onedaywhen建议使用CHECK CONSTAINT或验证规则以确保您的表格以后只接受有效数据。这是一个CHECK CONSTRAINT示例:
ALTER TABLE YourTable
ADD CONSTRAINT four_digits_required
CHECK (
YourTextField LIKE '[0-9][0-9][0-9][0-9]'
);
您可以从CurrentProject.Connection.Execute
运行该语句,这是一个ADO对象方法。具有CHECK约束的DDL语句只能从ADO执行。所以你无法从CurrentDb.Execute
执行该语句,这是一个DAO对象方法。
或者,这应该适用于YourTextField的验证规则属性:
LIKE "[0-9][0-9][0-9][0-9]"
验证规则方法还允许您使用“验证文本”属性在提交的值不可接受时向用户显示消息:
"4 digits required."
在这种情况下,验证文本方法与违反该约束时显示CHECK约束名称的方法大致相同。但是,如果您想要更详细的消息,验证文本可能是更好的选择。
答案 1 :(得分:3)
您可以尝试这样的事情:
RIGHT('0000' + TRIM(column), 4)
答案 2 :(得分:1)
有一些变化,这是另一个:
Left("0000", 4 - Len(Cstr(Trim(column)))) & Cstr(Trim(column))
有时Len命令会使用数值返回长度减1,因此Cstr可以避免这种情况。