sql server移动号码小数位

时间:2013-12-16 18:55:04

标签: sql sql-server decimal

下午,

我正在尝试将用零填充的数字转换为类似于MS SQL中的金额的数字。

以下是我所拥有的以及我想要的一个例子。

有: 00000000000039570 想: 395.70

到目前为止,我已设法使用以下代码摆脱前导零。

SUBSTRING ([Balance], PATINDEX ('%[^0 ]%', [Balance] + ' '), LEN([Balance])) AS [Balance]

回到我的例子,这会给我'39570'。

任何关于如何获得小数的帮助,或者更好的修剪方法,都将非常感激!

很抱歉,如果之前已经涵盖过这个问题。我做了一些搜索,但看不出我到底发生了什么。我是新来的,所以对我很轻松! ;)

3 个答案:

答案 0 :(得分:4)

您可以将字符串转换为float并除以100:

select cast('00000000000039570' as float)/100

如果你想要一个字符串表示:

select str(cast('00000000000039570' as float)/100, 15, 2)

编辑:

根据dasblinknight的评论,鉴于字符串的大小,以下内容更可取:

select cast('00000000000039570' as decimal(19,2))/100
select str(cast('00000000000039570' as decimal(19,2))/100, 15, 2)

答案 1 :(得分:0)

我不是MSSQL的大师,但在你做了之后我觉得应该可以工作:

SUBSTRING([BALANCE], 0, LEN([BALANCE]) - 2) + '.' + SUBSTRING([BALANCE], LEN([BALANCE]) - 2, 2)

答案 2 :(得分:0)

{{1}}