如何在sql中将小数点后2位向右移动,而不是转换或舍入

ctrmrzij  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(511)

我正在尝试将版本号转换为正确的格式,因为它与数据库中的其他数据一起附加。我正在使用 substring 拉混乱的版本号的最后6位数字,我得到的是最后6位数字,但小数位是2位,比它应该做的方式在数据库中格式化。如果可能的话,我要做的就是把那个小数位移两位数。这是我的驱动程序版本

25.21.14.2600

我需要的是最后的6,右边有两个小数点

426.00

我已经寻找了这个问题的答案,并尝试了我所看到的是什么

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

但这四舍五入并移动小数点。我试过使用 Replace ```
Replace(SUBSTRING(vc.DriverVersion0,8,6),'.','')

我不知道怎样才能在后面加上一个小数点,如果我能移动一下就好了,但是任何一个都可以。感谢您的帮助。
pgccezyw

pgccezyw1#

嗯。我不知道你想用哪种方式移动它。但你可以用 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)

退货:

abc.def
12345.6

此代码:

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

退货:

abc.def
1.23456

相关问题