2017-07-25 107 views
0

在SQL查询中,我想将数值转换为文本,其中最小编号为。的小数位数,例如,如果数字是2.50,那么我想输出为2.5;如果数字是3,那么我想输出为3;如果数字是18.75,我想输出为18.75等。SQL如何将数字转换为SQL中具有最小小数位数(动态小数位数)的文本

我该如何实现这一目标?

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

谢谢。

+0

SQL Server 2012中 – AllSolutions

回答

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

在SQL 2012或以上,你可以写

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

它采用FORMAT功能,它使用.NET String.Format功能。

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, 杰森

相关问题