添加一个。每个第3个数字/ pad在SELECT中为0

时间:2012-09-24 07:28:52

标签: sql ms-access ms-access-2007

在MS Access 2007项目中,我有一个包含以下记录源的报告:

SELECT SomeTable.SomeCol FROM SomeTable;

SomeCol 应为1,2,3,6或9位数字。

我们来看看3,6& 9首先。说它是123 - 这应保持为123。如果是123456,则应将其更改为123.456。如果是123456789,则应将其更改为123.456.789。如果是165,则应分别更改为001065

如何修改SELECT以执行这些更改?如果长度不是1,2,3,6或9,则字符串应保持不变。

谢谢!

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,虽然它不是很漂亮。

实际上,SomeTable.SomeCol是一个非常长的字符串,所以它在我的系统上看起来更糟糕。 SELECT是更大查询的一部分,有多个JOIN,因此需要SomeTable。我觉得这是最好的解决方案:

SELECT switch(
    len(SomeTable.SomeCol) < 3,
        format(SomeTable.SomeCol, '000'),
    len(SomeTable.SomeCol) = 6,
        format(SomeTable.SomeCol, '000\.000'),
    len(SomeTable.SomeCol) = 9,
        format(SomeTable.SomeCol, '000\.000\.000'),
    true,
        SomeTable.SomeCol
) as SomeCol
FROM SomeTable;

答案 1 :(得分:0)

我不知道你的语言环境,所以我不知道数字是默认为停止还是逗号:

SELECT IIf(Len([atext])<4,Format([atext],"000"),Replace(Format(Val([atext]),"#,###"),",",".")) AS FmtNumber
FROM Table2 AS t;

您可以使用类似的格式语句,而不必根据查询生成报表,但请确保在将控件设置为函数之前更改控件的名称。