【问题标题】:Get only decimal part in float number in SQL Server [closed]在 SQL Server 中仅获取浮点数的小数部分 [关闭]
【发布时间】:2012-08-21 04:31:06
【问题描述】:

我在 SQL Server 2008 中有以下号码:5.4564556
我只想从 5.4564556 得到 4564556
如果我只能得到 4564556 中的 4 个,那就是小数部分的第一个数字。

我该怎么做?

谢谢

【问题讨论】:

    标签: asp.net sql-server sql-server-2008


    【解决方案1】:

    你可以这样试试:

    SELECT (5.4564556 % 1)
    

    【讨论】:

      【解决方案2】:

      你也可以使用FLOOR():

      SELECT Value - FLOOR(Value)
      

      在你的情况下:

      5.4564556 - 5 = 0.4564556

      如果是负值,您可以使用ABS

      SELECT ABS(Value) - ABS(FLOOR(Value))
      

      【讨论】:

      • 这实际上是最好的答案,因为它在数学上是正确的,因此适用于所有浮点数的集合。
      【解决方案3】:

      要获取“.”后面的所有数字,您可以(ab)使用PARSENAME

      select PARSENAME(5.4564556,1)
      

      返回 4564556

      另请参阅SQL - How do I get only the numbers after the decimal?

      【讨论】:

      • @ghanshyam.mirani 请注意,PARSENAME 返回一个NVARCHAR(256)。我也没有看到您问题的第二部分 select LEFT(PARSENAME('5.4564556', 1), 1) 只会返回 4。您可能需要将其转换回数字类型。
      【解决方案4】:

      您可以通过以下方式获得前四个小数部分:

      select SUBSTRING (PARSENAME(5.4564556,1), 1, 4)
      

      【讨论】:

        【解决方案5】:

        试试这个

         select cast(5.4564556 % 1 * 10 as int)
        

        【讨论】:

          猜你喜欢
          • 2015-05-30
          • 1970-01-01
          • 2015-04-04
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          • 2011-03-31
          • 2011-02-05
          • 1970-01-01
          相关资源
          最近更新 更多