2012-01-05 129 views
1

我正在multipying值查詢SQL查詢返回值問題

DECLARE @Rate 
DECLARE @numeric 
DECLARE @Result decimal 
SET @Rate= .01 
SET @Result=34750*@Rate 
print @Result 

,但它始終顯示的數值爲

按照我的邏輯結果應該是347.5

我得到結果後347.5我需要溢出的值和插入到2個變量 像

@var1= 347 
@var2=5 

什麼wromg我在做什麼在這裏請讓我知道,任何幫助將是巨大的

感謝 王子

回答

4

您需要定義的規模和精度數值和小數數據類型

你可以通過轉換爲整數來獲得整個部分(但我不確定是否需要INT或FLOOR四捨五入)。我假設你只是想要分數的最高有效位。

DECLARE @Rate NUMERIC(18,4) 
DECLARE @Result DECIMAL(10,1) 

SET @Rate= .01 
SET @Result=34750*@Rate 
PRINT @Result 

DECLARE @IntPart INT 
DECLARE @FracPart INT 
SET @IntPart = CAST(@Result AS INT) 
PRINT @IntPart 
SET @FracPart = (@Result - @IntPart) * 10 
PRINT @FracPart 
+0

感謝nonnb工作正常。 – happysmile 2012-01-05 08:43:38

0

嘗試,

DECLARE @Rate AS DECIMAL(8,2) 
DECLARE @numeric AS DECIMAL(8,2) 
DECLARE @Result AS DECIMAL(8,2) 
SET @Rate = .01 
SET @Result = 34750 * @Rate 
PRINT @Result 

DECLARE @First AS INTEGER 
SET @First = FLOOR(@Result) 
PRINT @First 

DECLARE @Second AS INTEGER 
SET @Second = SUBSTRING(CAST((@[email protected]) AS VARCHAR),3,1) 
PRINT @Second 
0

你定義了數字和小數點非浮點數

您需要這些類型它

decimal(x,y) 
numeric(x,y) 

其中y - 是逗號後面的數字位數,以及x - 數字中的數字總數

0

試試這個

DECLARE @Rate decimal(18,4) 
DECLARE @numeric decimal 
DECLARE @Result decimal(18, 4) 
DECLARE @Var1 int, @Var2 decimal(18, 4) 
SET @Rate= .01 
SET @Result=34750*@Rate 
SET @Var1 = @Result 
SET @Var2 = @Result - @Var1 
print @Result 
print @Var1 
print @Var2 

輸出

347.5000 
347 
0.5000