NULLを含む場合のラベル表示

1,639 views
Skip to first unread message

chalen...@gmail.com

unread,
Oct 6, 2017, 3:54:38 AM10/6/17
to QGIS初心者質問グループ
以下の属性(フィールドと値)をラベルで表示するように指定しました


 "A"  ||   '\n'  ||   "B"  ||   '\n'  ||   "C"


全ての地物に「A」の値は入力されています。
しかし、「B」「C」の値は入力されているものと入力されていないもの(NULL)があります。

A、B、C 全てに値が入っていると、ラベルは表示されます。
しかし、一つでも欠けておれば、表示されません。

ex.
A,B:入力、C:NULL ⇒ 表示されない

全ての地物に、入力された値のみをラベルで表示させるにはどのようにすれば良いでしょうか?

ex.
A,B:入力、C:NULL ⇒ A,Bをラベル表示したい

福岡

unread,
Oct 6, 2017, 4:51:28 AM10/6/17
to QGIS初心者質問グループ
コンビニ名表示でname1に系列名、name2に支店名を入力していたところ、地元独自のコンビニが有りname2がnull値になったことがあります。
そのときの対処ですが、次のようにしました。

CASE
  WHEN  "name2" IS NULL THEN "name1" 
  ELSE "name1"  ||  '\n'  ||  "name2" 
END 

参考になれば幸いです。

福岡

unread,
Oct 6, 2017, 5:43:45 AM10/6/17
to QGIS初心者質問グループ
追記です。

先程は帰宅間際だったので、既にあったものをコピペしての投稿でした。
だだいま帰宅しましたので、今回のケースにあわせて式を考えてみました。

CASE
WHEN "B" IS NULL AND "C" IS NULL THEN "A" 
WHEN "B" IS NOT NULL AND "C" IS NULL THEN "A"  ||  "B" 
WHEN "B" IS NULL AND  "C" IS NOT NULL THEN "A" ||  "C" 
ELSE "A" || "B" || "C" 
END

これで、B、CのいずれかがNULL、あるいは両方ともNULLであったときにも対応できると思います。

きた

unread,
Oct 6, 2017, 7:57:16 AM10/6/17
to QGIS初心者質問グループ
if関数を使ってもできます。

 if("A" is null,'',"A")  ||   if("B" is null,'', '\n' || "B")  ||   if("C" is null ,'', '\n' || "C")

きた

福岡

unread,
Oct 6, 2017, 8:33:53 AM10/6/17
to QGIS初心者質問グループ
きた 様

条件式はCASE文を使ったものしか見掛けなかったので、これを使うことを習慣にしていましたが、この場合はif文の方がスッキリとしていますね。
これからは、使い分けして活用しようと思います。

chalen...@gmail.com

unread,
Oct 6, 2017, 11:59:39 PM10/6/17
to QGIS初心者質問グループ
福岡さま、きたさま

ありがとうございました。

Message has been deleted

やまぢ

unread,
Oct 7, 2017, 3:17:56 AM10/7/17
to QGIS初心者質問グループ
既に解決済みな雰囲気ですが、私がいつも使っているのはcoalesce関数です。

今回のケースですと以下のような記述になります。

"A" || coalesce('\n' || "B", '') || coalesce('\n' || "C", '')

coalesce関数は引数に渡した値のNULL値でない最初の引数を返す関数です。

”B"のフィールドがNULLでなければ '\n' || "B"  の値をそのまま表示します。

”B"のフィールドがNULLならば、 2番目の引数に渡した長さ0の文字列が表示されます。(つまり何も表示されない)
注)coalesce関数に渡している2番目の引数はダブルクォーテーションではなく、シングルクォーテーション2つです

こんな方法もありますということで、参考にしていただければ幸いです。

福岡

unread,
Oct 7, 2017, 7:55:19 PM10/7/17
to QGIS初心者質問グループ
やまぢ 様

coalesce関数は使ったことが無く、使用例も拝見できて勉強になりました。
ありがとうございました。
Reply all
Reply to author
Forward
0 new messages