Comment concaténer des étiquettes dans QGIS?


14

J'utilise QGIS 1.8 sur une machine Windows XP et j'essaie de faire une concaténation de plusieurs champs pour étiqueter les noms de mes routes locales dans la table attributaire, mais je ne trouve pas la syntaxe correcte. Le premier champ comprend om la rue, le deuxième type de lien, par exemple: l'avenue et la troisième orientation, par exemple, Est ou Ouest. Pourriez-vous me dire comment écrire la syntaxe correcte à l'aide de la boîte de dialogue des étiquettes basée sur une formule. Ci-joint une capture d'écran qui montre la table des attributs.

entrez la description de l'image ici

Réponses:


19

L'opérateur de concaténation est ||(impair hein?), Donc vous utiliseriez quelque chose comme:

street || ', ' || link || ', ' || orientation

Les entremêler avec les séparateurs et les chaînes statiques que vous aimez.

Comme l'a noté @NathanW, cela échouera si l'un des champs est NULL, mais vous pouvez utiliser une valeur de secours dans ce cas:

street || ', ' || CASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END || ', ' || orientation

QGIS prend en charge une fonction d'assistance coalescedepuis la version 2.0. Il est là pour éviter les problèmes de NULL et l'exemple ressemblerait à ceci:

 street || ', ' || coalesce(link, '(nodata)') || ', ' || orientation

2
Il y a aussi la concatfonction dans les versions dev. Utilisation de || ne gère pas NULL, si linkest NULL, l'intégralité de l'étiquette est null concatn'a pas ce problème. || est extrait de Postgres postgresql.org/docs/9.1/static/functions-string.html
Nathan W

On dirait qu'il ne prend pas directement en charge les déclarations de cas. La seule option sans utiliser directement SQL pour créer une copie non NULL de la colonne de lien?
lynxlynxlynx

Que voulez-vous dire ne prend pas en charge les déclarations de cas?
Nathan W

3
Il vous manque END. La chaîne correcte estCASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END
Nathan W

1
ahh coalesceest celui que je voulais dire.
Nathan W

2

Sur QGIS veriosn 2.0.1, l'expression simple fonctionnait comme ceci:

"champ1" || '(' || "field2" || ')'

sortie souhaitée: champ1 (champ2)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.