如何找出sql server 2008中小数点后的位数

时间:2017-01-06 05:43:13

标签: sql sql-server sql-server-2008

如何找出sql server 2008中小数点后的位数。

假设值为10.12365479

我想知道小数点后面放了多少位数。

注意:该列的类型为FLOAT。

1 个答案:

答案 0 :(得分:1)

我使用STR + REPLACE + LEN + CHARINDEX个功能。检查下面的中间结果,了解它是如何工作的。

declare @V float = 10.12365479;

SELECT
    @V AS v
    ,STR(@V, 50, 16) AS v_str
    ,REPLACE(STR(@V, 50, 16), '0', ' ') AS v_replace
    ,LEN(REPLACE(STR(@V, 50, 16), '0', ' ')) AS v_len
    ,CHARINDEX('.', STR(@V, 50, 16)) AS v_idx

    ,LEN(REPLACE(STR(@V, 50, 16), '0', ' ')) -
    CHARINDEX('.', STR(@V, 50, 16)) AS decimal_digits

结果为8

+-------------+----------------------------------------------------+----------------------------------------------------+-------+-------+----------------+
|      v      |                       v_str                        |                     v_replace                      | v_len | v_idx | decimal_digits |
+-------------+----------------------------------------------------+----------------------------------------------------+-------+-------+----------------+
| 10.12365479 |                                10.1236547900000000 |                                1 .12365479         |    42 |    34 |              8 |
+-------------+----------------------------------------------------+----------------------------------------------------+-------+-------+----------------+

显然,答案通常是16(最大可能),因为你的浮点值将表示为10.1236547899999999