我正在编写一个脚本,用于计算名为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块?
如果您使用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;
CASE x
只评估单个值,你需要CASE WHEN x ...
,如下:
SELECT CASE
WHEN $Fields >= 5 THEN 4
WHEN $Fields = 4 THEN 3
-- so on
END