SQLite CASE WHEN >= 评估
SQLite CASE WHEN with >= evaluation
我正在编写一个脚本,用于计算名为 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
;
我得到的只是一条消息,本质上是 "error near '>=': syntax error"。我如何在此 CASE 语句中表示此 WHEN >= 5 块?
CASE x
只会计算单个值,你需要 CASE WHEN x ...
,像这样:
SELECT CASE
WHEN $Fields >= 5 THEN 4
WHEN $Fields = 4 THEN 3
-- so on
END
如果您使用 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;
我正在编写一个脚本,用于计算名为 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
;
我得到的只是一条消息,本质上是 "error near '>=': syntax error"。我如何在此 CASE 语句中表示此 WHEN >= 5 块?
CASE x
只会计算单个值,你需要 CASE WHEN x ...
,像这样:
SELECT CASE
WHEN $Fields >= 5 THEN 4
WHEN $Fields = 4 THEN 3
-- so on
END
如果您使用 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;