2010-12-20 81 views
0

如何在Microsoft SQL Server 2005中執行以下操作?SQL Server中格式良好的數字

DECLARE @PCT Decimal(4,1) 
SET @PCT=3.1 
SELECT 
WHEN @PCT = CAST(@PCT AS Int) THEN CAST(CAST(@PCT AS Int) AS Varchar) 
ELSE CAST(@PCT AS Varchar) END AS newPct 

我試圖放棄.0如果百分比結束在一個整數。

+4

是否有理由在SQL中執行此操作而不是您的調用應用程序? – JNK 2010-12-20 20:29:40

+0

我把我所有的邏輯儘可能接近數據。 – 2010-12-20 21:15:14

回答

2

你有什麼,如果你添加CASE關鍵字

DECLARE @PCT Decimal(4,1) 
SET @PCT=3.1 
SELECT 
    CASE WHEN @PCT = CAST(@PCT AS Int) THEN CAST(CAST(@PCT AS Int) AS Varchar) 
    ELSE CAST(@PCT AS Varchar) END AS newPct 
+0

D'oh!案件!難怪它不工作! – 2010-12-20 20:33:24

+0

我接受了這個答案,因爲我還添加了WHEN @PCT IS NULL THEN'0'子句。 – 2010-12-21 02:46:56

1

嘗試強制轉換爲浮動第一會工作。從浮點數轉換爲varchar的規則與將小數轉換爲varchar的規則不同。以下似乎適用於我:

select cast(cast(@PCT as float) as varchar) as 'newPct' 
+0

鑄造一個'浮動'然後再回來似乎是一個不必要的精度丟失的可能性 – JNK 2010-12-20 20:43:37

+0

一般來說,我同意你的看法,但如果你開始使用'decimal'(4,1)'我不認爲有任何擔心...雖然我可能是錯的... – chezy525 2010-12-20 20:46:15

+0

我認爲在這種情況下它是好的,但它仍然擔心我看到它:) – JNK 2010-12-20 20:50:37