我必须在 MS Sql Server 托管的数据库中计算小数点后的数字(2005 或 2008 无关紧要),以纠正用户犯的一些错误。我在 Oracle 数据库上遇到了同样的问题,但事情没有那么复杂。底线在 Oracle 上,选择是:
select length( substr(to_char(MY_FIELD), instr(to_char(MY_FILED),'.',1,1)+1, length(to_char(MY_FILED)))) as digits_length
from MY_TABLE
其中提交的 My_filed 是 float(38)。
在 Ms Sql 服务器上,我尝试使用:
select LEN(SUBSTRING(CAST(MY_FIELD AS VARCHAR), CHARINDEX('.',CAST(MY_FILED AS VARCHAR),1)+1, LEN(CAST(MY_FIELD AS VARCHAR)))) as digits_length
from MY_TABLE
问题是在 MS Sql Server 上,当我将 MY_FIELD 转换为 varchar 时,浮点数仅被 2 位小数截断,并且数字的计数是错误的。有人可以给我任何提示吗?
最好的祝福。