SQL Server Format()函数

Tar*_*ryn 1 sql sql-server format ms-access

我在MS Access数据库中有一个当前查询,它使用Format()函数将数字(长整数)转换为字符串.

该表已重新设计并移至SQL Server.我需要转换的字段不是一个货币字段,我需要在句点之后删除所有内容并将其转换为具有一定数量字符的字符串.

样本数据:

Amount
228.00000
1896.00000
6411.00000
317.00000
4830.00000
898.00000
1778.00000
1308.00000
45139.00000
424.00000
Run Code Online (Sandbox Code Playgroud)

当前的MS Access查询:

SELECT Format(CallAmt],"000000000000000") AS Amount
FROM Fed
Run Code Online (Sandbox Code Playgroud)

新查询:

SELECT Convert(varchar(15), FedAmount)
FROM Fed.SM_T_Call
Run Code Online (Sandbox Code Playgroud)

我希望我的最终产品看起来像这样:

Amount
000000000000228
000000000001896
000000000006411
000000000000317
000000000004830
000000000000898
000000000001778
000000000001308
000000000045139
000000000000424
Run Code Online (Sandbox Code Playgroud)

我不知道如何在句点之后删除所有内容并为我的结果添加额外的零.有人可以提供任何帮助吗?

gbn*_*gbn 6

您可以使用:

  • CAST到十进制有一个固定的小数位数
  • 使用STR来正确对齐
  • 使用RIGHT('000000000000000' + CAST(MyNumber AS varchar(15)), 15)有前导零

或者以上所有:但我们不知道你想要什么输出......

更新后编辑

RIGHT('000000000000000' + CAST(CAST(Amount AS int) AS varchar(15)), 15)
Run Code Online (Sandbox Code Playgroud)

编辑,2011年10月

SQL Server 2012(Denali)将具有Format功能.

编辑,在onedaywhen评论后

DECLARE @len tinyint;
SET @len = 15;
RIGHT(REPLICATE('0', @len) + CAST(CAST(Amount AS int) AS varchar(255)), @len)
Run Code Online (Sandbox Code Playgroud)