QGISでラベルを連結する方法は?


14

私はWindows XPマシンでQGIS 1.8を使用しており、いくつかのフィールドを連結して属性テーブル内のローカル道路の名前をラベル付けしようとしていますが、正しい構文が見つかりません。最初のフィールドは、ストリート、2番目のタイプのリンク(例:アベニュー)、3番目の方向(例:東または西)で構成されます。数式に基づいたラベルのダイアログボックスを使用して、正しい構文を記述する方法を教えてください。属性テーブルを示すスクリーンショットを添付しました。

ここに画像の説明を入力してください

回答:


19

連結演算子は||(奇数か?)ですので、次のようなものを使用します。

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

好きな区切り文字や静的文字列を散在させます。

@NathanWが指摘したように、いずれかのフィールドがNULLの場合、これは失敗しますが、その場合はフォールバック値を使用できます。

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

QGISはcoalesceバージョン2.0以降のヘルパー機能をサポートしています。NULLの問題を回避するためにあり、例は次のようになります。

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

2
concatdevバージョンにも機能があります。||を使用する NULLを処理しません。NULLの場合link、ラベル全体がNULLの場合、concatこの問題は発生しません。|| Postgresのから取られpostgresql.org/docs/9.1/static/functions-string.html
ネイサンW

case文を直接サポートしていないようです。SQLを直接使用せずにリンク列のNULL以外のコピーを作成する唯一のオプションはありますか?
lynxlynxlynx

case文がサポートされていないというのはどういう意味ですか?
ネイサンW

3
ENDがありません。正しい文字列はCASE WHEN ("link" IS NULL) THEN '(nodata)' ELSE "link" END
ネイサンW

1
ああcoalesce、私が意図したものです。
ネイサンW

2

QGIS veriosn 2.0.1では、単純な式は次のように機能しました。

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

目的の出力:field1(field2)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.