在QGIS字段计算器中使用Elseif条件语句?


14

我正在尝试在QGIS字段计算器(版本1.8.0)中编写ELSEIF条件语句。我使用了一个在网上找到的示例:

CASE WHEN val < 0 THEN 'negative'
  WHEN val = 0 THEN "neutral'
  ELSE 'positive'
END

我将语句修改如下:

CASE WHEN  "GRID_ID"  = 1 THEN 'complete'
  ELSEIF  "GRID_ID"  = 2 THEN "in progress'
  ELSE 'not started'
END

该语句无法运行,输出预览中指出的表达式无效。说明了更多信息:解析器错误:语法错误,意外的COLUMN_REF,预期为WHEN或ELSE或END

如果有人遇到此错误,您如何解决?

Answers:


21

您的修改后的语句中有一些问题。

  • 前后引号使用不一致 "in progress'
  • 您不需要在列名两边加上引号。
  • 您在使用“ ELSEIF”时应使用“ WHEN”。

以下应解决所有三个问题,并在1.8.0中为我工作:

CASE WHEN GRID_ID = 1 THEN 'complete'
  WHEN GRID_ID = 2 THEN 'in progress'
  ELSE 'not started'
END

2
“您不需要在列名两边加上引号。” 您没有,但我仍然会推荐它,因为它将帮助语法突出显示器将该部分标记为一列。
内森(Nathan W)

@NathanW-不管您是否使用引号,语法突出显示项都会用红色标记列名,至少在我的1.8.0安装中会如此。
GIS-乔纳森(Jonathan)

1
确实如此。真令人尴尬,我在写荧光笔时应该已经知道了;)
Nathan W

@NathanW-可以理解。毕竟,我几乎记不住昨天写的内容。;-)
GIS-乔纳森(Jonathan)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.