SQL Server Format() 函数
我在 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
当前的 MS Access 查询:
SELECT Format(CallAmt],"000000000000000") AS Amount
FROM Fed
新查询:
SELECT Convert(varchar(15), FedAmount)
FROM Fed.SM_T_Call
我希望我的最终产品如下所示:
Amount
000000000000228
000000000001896
000000000006411
000000000000317
000000000004830
000000000000898
000000000001778
000000000001308
000000000045139
000000000000424
我不知道如何删除句点后的所有内容并向结果添加额外的零。有人可以提供任何帮助吗?
I have a current query in an MS Access database that uses the Format() function to convert a number (long integer) to a string.
The table has been redesigned and moved to SQL server. The field I need to convert is not a money field that I need to drop everything after the period and convert it to a string with a certain number of characters.
Sample Data:
Amount
228.00000
1896.00000
6411.00000
317.00000
4830.00000
898.00000
1778.00000
1308.00000
45139.00000
424.00000
Current MS Access query:
SELECT Format(CallAmt],"000000000000000") AS Amount
FROM Fed
New query:
SELECT Convert(varchar(15), FedAmount)
FROM Fed.SM_T_Call
I would like my final Product to look like this:
Amount
000000000000228
000000000001896
000000000006411
000000000000317
000000000004830
000000000000898
000000000001778
000000000001308
000000000045139
000000000000424
I don't know how to drop everything after the period and add the extra zeros to my result. Can anyone offer any assistance?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(5)
@gbn 的答案对于 SQL Server 来说是一个很好的答案,它使用专有函数 RIGHT()
和 REPLICATE()
。
请注意,您已经必须移植一次,以下版本可能是更可移植的版本,因为它使用标准 SQL 函数。请注意,标准 SQL 中的字符串连接运算符是 ||
,而 SQL Server 使用 +
进行相同操作(MS 仍然声称它是兼容的,请看图)。然而,所提出的代码在可移植性方面仍然得分很高,因为将 `||
转换为 +
是微不足道的:
REVERSE(CAST(REVERSE(CAST(CAST(Amount AS INTEGER) AS VARCHAR(15)))
+ '000000000000000' AS CHAR(15)))
您可以使用:
- CAST 为小数以获得固定的小数位数
- 使用 STR 右对齐
- 使用
RIGHT('000000000000000' + CAST(MyNumber AS varchar(15)), 15)
具有前导零
或者以上所有:但我们不知道您想要什么输出...
编辑,更新后
RIGHT('000000000000000' + CAST(CAST(Amount AS int) AS varchar(15)), 15)
编辑,2011 年 10 月
SQL Server 2012 (Denali) 将有格式化功能。
编辑,在 onedaywhen 发表评论后
DECLARE @len tinyint;
SET @len = 15;
RIGHT(REPLICATE('0', @len) + CAST(CAST(Amount AS int) AS varchar(255)), @len)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
可能真的有效吗?
Might actually work?