Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 添加一个。每3位数字/键盘选择0_Sql_Ms Access_Ms Access 2007 - Fatal编程技术网

Sql 添加一个。每3位数字/键盘选择0

Sql 添加一个。每3位数字/键盘选择0,sql,ms-access,ms-access-2007,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。如果是1或65,则应分别更改为001和065 如何修改我的选择以执行这些更改?如果长度不是1、2、3、6或9,则字符串应保持不变 谢谢

在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
,则应分别更改为
001
065

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


谢谢

我找到了一个解决方案,尽管它不是很漂亮

实际上,
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;
选择开关(
len(SomeTable.SomeCol)<3,
格式(SomeTable.SomeCol,'000'),
len(SomeTable.SomeCol)=6,
格式(SomeTable.SomeCol,'000\.000'),
len(SomeTable.SomeCol)=9,
格式(SomeTable.SomeCol,'000\.000\.000'),
是的,
某某,某某
)作为萨默科尔
从某张桌子;

我找到了一个解决方案,尽管它不是很漂亮

实际上,
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;
选择开关(
len(SomeTable.SomeCol)<3,
格式(SomeTable.SomeCol,'000'),
len(SomeTable.SomeCol)=6,
格式(SomeTable.SomeCol,'000\.000'),
len(SomeTable.SomeCol)=9,
格式(SomeTable.SomeCol,'000\.000\.000'),
是的,
某某,某某
)作为萨默科尔
从某张桌子;

我不知道您的区域设置,所以我不知道数字默认为停止还是逗号:

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

SELECT IIf(Len([atext])我不知道您的语言环境,所以我不知道数字是默认为stop还是逗号:

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

选择IIf(Len([atext])你的
SomeCol
@RowlandShaw是什么数据类型?它是文本-我知道,我知道。它应该是一个数字。不幸的是,这是我无法控制的。你的
SomeCol
@RowlandShaw是什么数据类型?它是文本-我知道,我知道。它应该是一个数字。不幸的是,这是我无法控制的。@HansUp这只是为了be用于单个报表,所以我认为在SQL中使用它是可以的。@HansUp这只用于单个报表,所以我认为在SQL中使用它是可以的。这帮助很大。我没有使用这个确切的SQL,但是使用了
format()
启发了一个更好的方法来实现这一点。这很有帮助。我没有使用这个确切的SQL,但是使用
format()
启发了一个更好的方法来实现这一点。