gpt4 book ai didi

sql - 将商或更长的表达式分配给局部(实数)变量 T SQL

转载 作者:行者123 更新时间:2023-12-03 23:10:54 27 4
gpt4 key购买 nike

很震惊地学习这个,我肯定在犯错误......

如果我 DECLARE 一个实数(或十进制)局部变量,我不能分配 (SET) 表达式的值?我必须先设置一个值,然后逐步执行表达式。如果我尝试一次“计算”所有内容,我会得到 0

所以,这有效..

DECLARE @HitRate real
SET @HitRate = 805499
SET @HitRate = (@HitRate / 847125) * 100
--SET @HitRate = (805499 / 847125) * 100 --But this does not work?
SELECT @HitRate
  • 如果我注释掉第一个 2 SET 语句并只使用第三个我得到 0
  • 如果我使用所有 3,我得到 0
  • 如果我 CAST(@HitRate As DECIMAL(9,2)) 我得到 0

最佳答案

demo你需要把 805499 变成 805499.00 这意味着 int 可以 float

DECLARE @HitRate real
SET @HitRate = 805499
SET @HitRate = (@HitRate / 847125) * 100
SET @HitRate = (805499.00 / 847125) * 100.00 --this will work now
SELECT @HitRate

你得到 0 是因为 805499/847125 = 0.95 但数据库引擎返回 0 因为它采用整数值,这就是为什么当你将 100 与 0 相乘时它也会输出 0

或者你可以像下面这样显式地cast

SET @HitRate = (cast( 805499 as float) / 847125) * 100 

它还会返回 95.0862

关于sql - 将商或更长的表达式分配给局部(实数)变量 T SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55150983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com