sql-server - 在 SQL Server 中将因数转换为十进制

标签 sql-server

我需要将一个以因式分解格式给出小数的数字转换为小数,

即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/

相关文章:

sql - 带有格式文件的批量插入不跳过目标表中应该有 146 个字段的列

sql - 在插入查询中动态选择列名

c# - 具有多个 OR 条件的 EF core 连接

java - 找不到驱动程序

sql - 选择同一表关系 SQL Server 中的所有父项或子项

不是瀑布分组的 SQL CASE 语句

sql-server - SQL Server 2005 : T-SQL to temporarily disable a trigger

sql - 查找查询返回的列数

sql - 如何使用sql计算增长百分比

sql-server - Windows 桌面应用程序 : Access, SQLite、SQL Server 等的最佳零(接近零?)管理关系数据库是什么?