sqlite - 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 块?
解决方案
如果你使用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;
推荐阅读
- parsing - 批处理:不解析键值注释
- azure - 使用 azure App Insights 显示分数低于 60% 的 Qna Maker
- php - 如何将两个数组合并为一个并转置结构以简化循环打印?
- java - 检查对象字段是否已存在于另一个实例中
- python - Selenium - pip install 在哪里找到 chromedriver.exe?
- java - 如何在 Android Studio 中测试从 github 下载的项目
- javascript - 正确使用javascript选择选择框的值?
- elasticsearch - 忽略词频但使用位置
- flutter - 浏览器顶部栏不随内容滚动
- sql - 使用另一个 SQL 表中的规则过滤掉一个 SQL 表中的记录