Sql 添加一个。每3位数字/键盘选择0
在MS Access 2007项目中,我有一份报告,记录来源如下: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,则字符串应保持不变 谢谢
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()
启发了一个更好的方法来实现这一点。