如何在文本字段中添加(?)数字为'0'?

时间:2012-03-08 05:22:37

标签: sql ms-access

我在Microsoft Access中有一个仅包含数字的文本字段。我不知道这些数字是否以空白字符开头。

我想要做的是,如果字段为'1'我想将其转换为'0001',如果它有'89',那么我想将其转换为'0089',等等。意思是我只是想要使字段的长度保持一致4个字符,并用适当的数字“0”填充数字。

我该怎么做?我可以使用计算的现场方法吗? 如果SQL有一种简单的方法,我可以将数据库转换为SQL。

感谢。

3 个答案:

答案 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可以避免这种情况。