2015-10-07 29 views
0

在SQL Server 2014我有一些小數位我可以截斷而捨去

select top 25 
    ProductName, round(UnitPrice, 1) as 'Price of Products' 
from 
    Products 

該查詢返回的結果是這樣的後已經尾隨零以及一些值的值:

Chai       18.00 
Chang       19.00 
Aniseed Syrup     10.00 
Chef Anton's Cajun Seasoning 22.00 
Chef Anton's Gumbo Mix   21.40 

我的問題是,我可以刪除小數點後的尾隨零,同時保留可能存在的任何值,例如21.40,而其他值僅保留爲18或22,因爲圓不會消除尾隨零點

+0

詹姆斯,你正在解決你的問題在錯誤的結局。 SQL Server應該提供* data *,而不是* presentation *。如果您想向用戶顯示「18」而不是「18.00」,請更改顯示數據的組件,而不是傳送數據的組件。 – Tomalak

+0

回答這個問題,是的,它可以做到,但在TSQL中做到這一點很麻煩。正如@Tomalak所說,最好在客戶端進行。如果你絕對不能這麼做,那就這麼說吧,我相信我們可以寫出所需的TSQL。基本上,只有在非零時才顯示美分,對嗎? – Greg

+0

是的,這是正確的。我想在非零時顯示美分,否則刪除任何尾隨的零。所以如果它是19.40美分將顯示,但如果它是21.00它將只顯示21 –

回答

0

這裏有一個黑客,這個作品假設你總是有一個小數位。

create table t1 (col1 decimal (5,2)); 

insert into t1 (col1) values (10.00) 
insert into t1 (col1) values (10.50) 

select case col1 % 1 
    when 0 then PARSENAME(col1, 2) 
    else col1 
end 
from t1 
1

SQL Server 2014具有FORMAT函數。

如果您圓價格爲2個十進制數字,格式化字符串應該是這樣的:

FORMAT(ROUND(UnitPrice, 2), '0.##') 

其實,你並不需要顯式的ROUNDFORMAT會做任何方式:

FORMAT(UnitPrice, '0.##') 
相關問題