如何在SQL中将小数位向右移动2位,而不是转换或四舍五入

How to move decimal place 2 positions to the right in SQL, not converting or rounding

我正在尝试将版本号转换为正确的格式,因为它附加在数据库中的其他数据中。我正在使用 substring 来提取混乱版本号的最后 6 位数字,我得到的是最后 6 位数字,但小数位比它应该按照格式设置的方式高出 2 位数字数据库。我想做的是尽可能将小数点移动两位数。这是我的驱动版本

25.21.14.2600

我需要的是最后一位小数点右边两位

426.00

我一直在寻找这方面的答案并尝试了我所看到的

CONVERT(DECIMAL,SUBSTRING(vc.DriverVersion0,8,6))/100

但这会四舍五入并移动小数位。我试过使用 Replace

Replace(SUBSTRING(vc.DriverVersion0,8,6),'.','')

哪个可以删除它,但我不知道如何在之后给它添加一个小数,如果我可以移动但任何一个都有效,那就太好了。感谢任何帮助。

嗯。 . .我不确定你想以哪种方式移动它。但是你可以使用 stuff()charindex():

select stuff(replace(str, '.', ''), charindex('.', str) + 2, 0, '.')

不过我不确定你是想要 + 2 还是 - 2

所以这段代码:

select stuff(replace(str, '.', ''), charindex('.', str) + 2, 0, '.')
from (values ('a.bcdef'), ('123.456')) v(str)

Returns:

abc.def
12345.6

此代码:

select stuff(replace(str, '.', ''), charindex('.', str) - 2, 0, '.')
from (values ('abcde.f'), ('123.456')) v(str)

Returns:

abc.def
1.23456