首页 > 解决方案 > SQLite CASE WHEN >= 评估

问题描述

我正在编写一个脚本来计算名为 Agricola 的棋盘游戏的分数。以下查询有效:

SELECT
CASE $Fields WHEN 0 THEN -1
             WHEN 1 THEN -1
             WHEN 2 THEN 1
             WHEN 3 THEN 2
             WHEN 4 THEN 3             
END
;

以下查询将不起作用:

SELECT
CASE $Fields WHEN 0 THEN -1
             WHEN 1 THEN -1
             WHEN 2 THEN 1
             WHEN 3 THEN 2
             WHEN 4 THEN 3
             WHEN >= 5 THEN 4
END
;

我得到的只是一条消息,基本上是说“'> ='附近的错误:语法错误”。我如何在这个 CASE 语句中表示这个 WHEN >= 5 块?

标签: sqlitecase-when

解决方案


如果你使用CASE表达式的替代形式,你可以使用不等式:

SELECT
    CASE WHEN $Fields = 0 THEN -1
         WHEN $Fields = 1 THEN -1
         WHEN $Fields = 2 THEN 1
         WHEN $Fields = 3 THEN 2
         WHEN $Fields = 4 THEN 3
         WHEN $Fields >= 5 THEN 4
    END;

如果您想继续使用您的 形式CASE,这里的一种选择是将$Fields >= 5案例放入ELSE条件中。这将假设$Fields永远不会是负面的。假设这一点,您可以尝试:

SELECT
    CASE $Fields WHEN 0 THEN -1
                 WHEN 1 THEN -1
                 WHEN 2 THEN 1
                 WHEN 3 THEN 2
                 WHEN 4 THEN 3
                 ELSE 4
    END;

推荐阅读