我需要将一个以因式分解格式给出小数的数字转换为小数,
即11.16 是十进制的 11.5。这是因为 16 是以 32 为底的,11.16 应该读作 11+16/32 = 11.5
我得到 11.16 作为字符串,我需要将它更改为 11.5 作为 SQL Server 2005 数据库中的数字。
有什么比拆分字符串、转换为数字、数学、转换为字符串、连接然后转换为数字更短的方法吗?
最佳答案
作为一个不需要字符串拆分的函数:
CREATE FUNCTION MyFunc
(
@value varchar(10)
)
RETURNS float
AS
BEGIN
declare @dValue float
declare @fraction float
Select @dvalue = convert(float, @value)
Select @fraction = @dvalue - Convert(int, @dvalue)
Select @dvalue = (@dvalue - @fraction) + ((@fraction * 100) / 32)
RETURN @dvalue
END
注意:这里假设“8/32”表示为 0.08,而不是 0.8
您应该调整“varchar(10)”以匹配您的实际需要。
关于sql-server - 在 SQL Server 中将因数转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2493657/