我有一个小数列表存储为VARCHAR(50)
,每个都有不同的精度和规模(我没有设计/不能改变它)。我需要修改一些数字以四舍五入到最接近的比例(0.5变为0.6,0.001变为0.002,0.01000变为0.02000等)。如何将存储为varchar的小数增加到最近的比例?
原因是我们需要将我们的一些bucketing函数的边界转换为小数。目前,它被存储为:
'0.00', '0.05', '> 0.05'
但我需要将其转换为所有小数:
'0.00', '0.05', '0.06'
我可以得到一个数字(5)的比例为这样:
SELECT LEN(CAST(REVERSE(PARSENAME('84.274190',1)) AS INT))
我可以得到要添加的数值(0.00001),如下所示:
SELECT '0.' + REPLICATE('0', LEN(CAST(REVERSE(PARSENAME('84.274190',1)) AS INT))-1) + '1'
我如何将这两个添加到一起?我可以投到DECIMAL
,但精度,比例因数而异。
我开始'84 0.274190' ,我想84年的0.274200'
和0.106会去什么? – scsimon
这将增加0.107 – TomNash
为什么你不得到最后一个元素并增加它? – Bharat