SQL如何在SQL中将数字转换为具有最小小数位数(动态小数位数)的文本

时间:2017-07-25 04:35:53

标签: sql sql-server sql-server-2012

在SQL查询中,我想将数值转换为最小值为no的文本。小数位,例如,如果数字是2.50,那么我想输出为2.5;如果number是3,那么我想输出为3;如果数字是18.75,我希望输出为18.75等。

我怎样才能做到这一点?

编辑1: 为了给出更多背景,我将2个数值除,并希望文本中的结果具有最小必需小数位。

感谢。

3 个答案:

答案 0 :(得分:2)

在SQL 2012及更高版本中,您可以编写

SELECT FORMAT(15.0/4.0 , '#.########' )

它使用FORMAT函数,该函数使用.NET String.Format功能。

答案 1 :(得分:0)

如果要为除法值获得2位小数,请使用此

 Select  case when right(cast ( x/y as decimal(18,2)),1) = 0 
              then left (cast ( x/y as decimal(18,2)),3) 
              else cast ( x/y as decimal(18,2)) end ReqOutput

答案 2 :(得分:0)

这应该可以解决问题......

IF OBJECT_ID('tempdb..#TestData', 'U') IS NOT NULL 
DROP TABLE #TestData;

CREATE TABLE #TestData (
    SomeNumber DECIMAL(9,7) NOT NULL 
    );
INSERT #TestData (SomeNumber) VALUES 
    (1.2345670), (1), (99.00100), (5.55);


SELECT 
    td.SomeNumber,
    REVERSE(STUFF(rcv.RevCastVarchar, 1, PATINDEX('%[^0.]%', rcv.RevCastVarchar) - 1, ''))
FROM
    #TestData td
    CROSS APPLY ( VALUES (REVERSE(CAST(td.SomeNumber AS VARCHAR(10)))) ) rcv (RevCastVarchar);

HTH, 杰森