【问题标题】:how can I get the fraction of the decimal in sql [closed]如何在sql中获得小数的分数[关闭]
【发布时间】:2012-01-16 16:02:40
【问题描述】:

我有一个十进制值 34.3287332 我怎样才能得到像 .3287332 这样的值的分数,请任何人帮忙(我可以将其转换为字符串并得到分数。但我不需要)

【问题讨论】:

    标签: .net sql sql-server-2008 tsql c#-4.0


    【解决方案1】:

    使用FLOOR():

    SELECT Value-FLOOR(Value)
    

    这样就可以了:

    34.3287332 - 34 = 0.3287332
    

    【讨论】:

    • 我喜欢一个新的解决方案,使用模块运算符除以 1 SELECT(34.3287332) % 1
    【解决方案2】:

    我只会获取整个值,然后获取余数:

    decimal total = /* get value from database */;
    decimal fraction = decimal.Remainder(total, 1m);
    

    (可能有一种更有效的方法来获取剩余部分,但这很简单。)

    虽然您也可以在 SQL 中执行此操作,但当您想使用 LINQ to SQL 或任何类似方法获取值时,这可能效果不佳 - 我更喜欢将值操作放在 .NET 代码中而不是 SQL 中,除非它影响结果或性能。

    【讨论】:

    • 感谢您的回复,能否给我一个 SQL 示例?
    • @ArooranS:您对 SQL 方法有其他答案。我已经解释了为什么我通常会在 C# 代码中执行此操作。
    • 这不是 SQL
    【解决方案3】:

    请注意,上面的 FLOOR 建议不适用于 数字;你需要ABS(my_float_value) - FLOOR(ABS(my_float_value)) 才能得到正确的答案。

    如果您发现自己使用 SQLite 后端,您会发现它没有 FLOOR 函数,并且“my_float_value % 1”技巧也无效。然后您可以应用 CAST 来获得等效的功能: ABS(my_float_value) - CAST(ABS(my_float_value) AS INTEGER)

    【讨论】:

      猜你喜欢
      • 2021-01-23
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 2023-02-04
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      相关资源
      最近更新 更多