【问题标题】:Can't set value to column conditionally无法有条件地为列设置值
【发布时间】:2022-01-06 11:51:27
【问题描述】:

即使我在x != N 中检查了这种情况,以下代码也会引发can't calculate log of zero 错误

DO $$
DECLARE N integer;
BEGIN
    select count(*) from mytable INTO N;
    UPDATE
        words
    SET
    measure = 
         CASE 
            WHEN x != N THEN 1 + log((N - x) / x)
            ELSE 0
         END;   
END $$;

也试过了,同样的错误:

DO $$
DECLARE N integer;
BEGIN
    select count(*) from mytable INTO N;
    UPDATE words
    SET measure = 1 + log((N-x)/x)
    WHERE x <> N;   
END $$; 

【问题讨论】:

  • x 的数据类型是什么?如果这是一个整数,(N-x)/x 可能会变成 0。
  • @FrankHeikens 它确实是一个整数,谢谢

标签: sql postgresql


【解决方案1】:

我认为原因在于 "(N-x)/x" 部分:由于 'N' 和 'x' 都是整数, 结果四舍五入到最接近的整数(对于正的“N-x”和“x”,它始终为 0)。

顺便说一句,这是一个重复的问题:

Division ( / ) not giving my answer in postgresql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2018-08-12
    • 1970-01-01
    • 2012-01-19
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多