Bagaimana cara menggabungkan label di QGIS?

14

Saya menggunakan QGIS 1.8 pada mesin windows XP dan saya mencoba melakukan penggabungan beberapa bidang untuk memberi label nama jalan lokal saya di tabel atribut, tetapi saya tidak dapat menemukan sintaks yang benar. Bidang pertama terdiri dari om the street, jenis tautan kedua, misal: Avenue dan orientasi ketiga, misalnya Timur atau Barat. Bisakah Anda memberi tahu saya cara menulis sintaks yang benar menggunakan kotak dialog label berdasarkan rumus. Melampirkan tangkapan layar yang memperlihatkan tabel atribut.

masukkan deskripsi gambar di sini

Gabriel Giroux
sumber

Jawaban:

19

Operator gabungan adalah ||(aneh ya?), Jadi Anda akan menggunakan sesuatu seperti:

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

Selingi mereka dengan pemisah dan string statis yang Anda suka.

Seperti yang dicatat oleh @NathanW, ini akan gagal jika salah satu bidangnya NULL, tetapi Anda dapat menggunakan nilai cadangan dalam kasus itu:

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

QGIS mendukung fungsi pembantu coalescesejak versi 2.0. Itu ada untuk menghindari masalah NULLs dan contohnya akan terlihat seperti:

 street || ', ' || coalesce(link, '(nodata)') || ', ' || orientation
lynxlynxlynx
sumber
2
Ada juga concatfungsi di versi dev. Menggunakan || tidak menangani NULL, jika linkNULL seluruh label adalah null concattidak memiliki masalah ini. || diambil dari Postgres postgresql.org/docs/9.1/static/functions-string.html
Nathan W
Sepertinya itu tidak mendukung pernyataan kasus secara langsung. Apakah satu-satunya pilihan tanpa menggunakan SQL secara langsung untuk membuat salinan kolom tautan NULL?
lynxlynxlynx
Apa maksud Anda tidak mendukung pernyataan kasus?
Nathan W
3
Anda melewatkan END. String yang benar adalahCASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END
Nathan W
1
ahh coalesceyang saya maksud.
Nathan W
2

Pada QGIS veriosn 2.0.1 ungkapan sederhana bekerja seperti ini:

"field1" || '(' || "field2" || ')'

output yang diinginkan: field1 (field2)

Pavlarian
sumber