我在Windows XP计算机上使用QGIS 1.8,并且尝试对多个字段进行串联以在属性表中标记本地道路的名称,但是找不到正确的语法。第一个字段包含街道,第二个链接类型,例如:大道和第三个方向,例如东或西。您能告诉我如何使用基于公式的标签对话框来编写正确的语法。附加了显示属性表的屏幕截图。
我在Windows XP计算机上使用QGIS 1.8,并且尝试对多个字段进行串联以在属性表中标记本地道路的名称,但是找不到正确的语法。第一个字段包含街道,第二个链接类型,例如:大道和第三个方向,例如东或西。您能告诉我如何使用基于公式的标签对话框来编写正确的语法。附加了显示属性表的屏幕截图。
Answers:
串联运算符是||
(奇数吗?),因此您将使用类似以下的内容:
street || ', ' || link || ', ' || orientation
将它们与所需的任何分隔符和静态字符串一起穿插。
如@NathanW所指出的,如果任何字段为NULL,这将失败,但是在这种情况下,您可以使用后备值:
street || ', ' || CASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END || ', ' || orientation
coalesce
从2.0版开始,QGIS支持辅助功能。它可以避免NULL问题,并且示例如下所示:
street || ', ' || coalesce(link, '(nodata)') || ', ' || orientation
CASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END
coalesce
是我的意思。
concat
开发版本中也有此功能。使用|| 不处理NULL,如果link
为NULL,则整个标签为NULLconcat
不会出现此问题。|| 取自Postgres postgresql.org/docs/9.1/static/functions-string.html