我正在查询查询中的值
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
我在这里做什么,请告诉我,任何帮助都会很棒
由于 王子
答案 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