2017-06-20 16 views
-2

我需要的結果像數字'500.000100'結果應該是'500.0001'。將零截斷爲最後可用的數字。取整數字

如果沒有可用的值十進制值,然後到兩位小數後e.g返回500.000000 500.00

+0

請分享對這個問題由於SQL查詢 –

+0

您不能混用數據類型,你要麼有小數點後2位或4位,你不能兼得。什麼是原始數據類型? – HoneyBadger

+0

嘗試:'select cast(cast(500.000100 as DECIMAL(9,6))as float)' –

回答

0

播放與format功能。像這樣...

declare @d as decimal(19, 6) 

set @d = 50000.123456 

select 
    (case 
     when @d/convert(int, @d) = 1. then format(@d, '#.00') 
     else format(@d, '#.####') 
    end) as FormatD 

set @d = 500.000000 

select 
    (case 
     when @d/convert(int, @d) = 1. then format(@d, '#.00') 
     else format(@d, '#.####') 
    end) as FormatD 
+0

你可以優化這個查詢,因爲它給出280.00000000000001 DECLARE @num decimal(28,16)= 280.000000000000010000 SELECT PARSENAME(@ num,2)+ REPLACE(RTRIM(LTRIM(REPLACE(@ num-PARSENAME(@num, 2),'0',''))),'','0') –

+0

謝謝DeanSavović爲您的支持做出了很大的貢獻 –

0

使用格式化功能。

DECLARE @test TABLE 
(
    val DECIMAL(18,9) 
); 

INSERT INTO @test (val) VALUES (0); 
INSERT INTO @test (val) VALUES (1.1); 
INSERT INTO @test (val) VALUES (2.32); 
INSERT INTO @test (val) VALUES (33.501); 
INSERT INTO @test (val) VALUES (444.0060100); 
INSERT INTO @test (val) VALUES (5555.00600000100); 

SELECT val, format(val, '0.00################') formatted 
FROM @test; 
+0

感謝Ryszard Kozlowski,但我需要一個腳本,可以爲列中的大量值。 –

+0

我不確定我是否理解您要查找的內容,但是如果您需要支持小數點後的最大位數,則只需在格式化字符串中添加更多'#'字符,例如: 'SELECT val ,格式(val, '0.00 ####################################')格式化爲 FROM @測試;' –