sql查询返回值问题

时间:2012-01-05 07:42:41

标签: sql-server

我正在查询查询中的值

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

但它始终将值显示为 0

根据我的逻辑,结果应为 347.5

在我得到结果347.5之后,我需要将值和d插入到2个变量中 喜欢

@var1= 347
@var2=5

我在这里做什么,请告诉我,任何帮助都会很棒

由于 王子

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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((@Result-@First) AS VARCHAR),3,1)
PRINT @Second

答案 2 :(得分:0)

您将数字和小数定义为非浮点数

你需要这些类型

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

其中y - 是逗号之后的数字位数,x是数字中的总数位数

答案 3 :(得分: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