2012-01-04 89 views
1

在Sql服務器中,我試圖寫一個查詢,如果值小於零,我想顯示「< 0」,其他明智的相同的值。爲此,我寫了一個簡單的查詢,如下所示: 我知道它正在給出轉換錯誤,但是你能否幫助解決這個問題。在sql server中的情況條件?對於小數數據類型?

declare @ret decimal = 0.25  
select (case when @ret <0 then '< 0' else @ret end) as colum  

回答

2

試試這個,使用當關於十進制

declare @ret decimal(10,5) =0.25 
select case when @ret < 0 THEN '< 0' ELSE cast(@ret as varchar) end as colum 
+0

感謝您的回覆Oleg Dok,但它顯示0.2500 – 2012-01-04 11:28:01

+0

是的,因爲它> 0,試試這與-0.25,或更改類型爲十進制(10,2)作爲一個選項 – 2012-01-04 11:29:41

+0

對不起,我更改我的查詢,請檢查它,實際上在準備問題時,我錯誤地鍵入請找到我的edied問題 – 2012-01-04 11:32:04

1

,因爲你沒有指定的精度和規模爲@ret變量,規模將是0默認(參見MSDNThe default scale is 0),只需指定規模,同時聲明變量:

DECLARE @ret DECIMAL(10,2) = 0.25 

SELECT 
    CASE 
      WHEN @ret < 0 THEN '< 0' 
      ELSE CAST(@ret AS VARCHAR) 
    END 
+0

它給埃羅SLL,謝謝你的答覆 – 2012-01-04 11:28:30

+0

小的修正作出 – 2012-01-04 11:30:21

+0

它只但沒有顯示「0」,「<0」 @Sll – 2012-01-04 11:36:13

0

基本的例子精密調節劑要注意10 TSQL

declare @iDec decimal(10,5) = 10.5 
SELECT ProductNumber, 
     Category = 
     CASE ProductLine 
     WHEN @iDec > 1 THEN 'Greater Than 1' 
     WHEN @iDec < 1 THEN 'Less Than 1' 
     ELSE 'Equal to 1' 
     END, 
     Name 
FROM Production.Product 
ORDER BY ProductNumber; 
相關問題