1

在一个 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。如果是1, 或65,则应分别更改为001065

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

谢谢!

4

2 回答 2

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;
于 2012-09-24T07:55:07.737 回答
0

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

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

您可以使用类似格式的语句,而无需将报表基于查询,但请确保在将控件设置为函数之前更改控件的名称。

于 2012-09-24T08:28:12.833 回答