尝试为列赋值时接收空值

7qhs6swi  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(312)

我正在研究一个评分系统 MySQL Workbench 而且在很大程度上进展顺利。有一列给我带来了麻烦,并不断导致空值,即使原始数据不包含空值。这是我用来获取列的查询。

SELECT 
    (CASE days_in_current_status
        WHEN days_in_current_status < 1000 THEN 0.33 * 20
        WHEN days_in_current_status BETWEEN 1000 and 2000 THEN 0.66 * 20
        WHEN days_in_current_status > 2000 THEN 1 * 20
    END) AS DI_score
FROM
    issues

下面是原始列中的值的图片。

你知道这里少了什么吗?我马上就要睡觉了,明天再试一次,但如果有任何提示,我将不胜感激。

lhcgjxsq

lhcgjxsq1#

问题是你写作的方式 CASE 表情。以你所写的形式,它是比较 days_in_current_status 价值 days_in_current_status < 1000 (或其他逻辑表达式之一),在mysql中 1 (true) 或者 0 (false) . 因此,没有一个分支 CASE 将匹配(除非 days_in_current_status 碰巧是1或0)既然你没有 ELSE 子句,结果是 NULL . 如果你重写你的 CASE 表达式如下它应该按预期工作。

(CASE
    WHEN days_in_current_status < 1000 THEN 0.33 * 20
    WHEN days_in_current_status BETWEEN 1000 and 2000 THEN 0.66 * 20
    WHEN days_in_current_status > 2000 THEN 1 * 20
END) AS DI_score

请参阅手册,以了解有关 CASE 表情。

相关问题