Exibindo vários campos como rótulos se um campo for nulo no QGIS?

12

Estou com alguns problemas ao tentar mostrar vários campos para um único rótulo no QGIS. No QGIS2.6, tentar exibir rótulos para um recurso que consiste em vários campos resulta em um rótulo vazio se um dos campos for nulo. Por exemplo, na caixa de diálogo de expressão do rótulo:

concat("Temp Site",'\n',"Notes",'\n',"Function")

funcionará normalmente, a menos que um dos campos seja nulo, resultando em nenhum rótulo sendo mostrado. Usando o '||' O operador na caixa de diálogo de expressão também resulta no mesmo comportamento:

"Temp Site" || '\n'  ||  "Notes" || '\n'  ||  "Function"

Existe uma maneira de exibir os rótulos, mesmo que um dos campos seja nulo?

kilolima
fonte

Respostas:

20

Use a função "Coalesce". Coalesce pega o primeiro valor não nulo de seus argumentos. Portanto, essa expressão deve funcionar:

coalesce("Temp Site",'') || '\n'  ||  coalesce("Notes",'') || '\n'  ||  coalesce("Function",'')
ndawson
fonte
1
Você também pode agrupar a nova linha dentro da função de coalescência, se fizer sentido evitar as linhas em branco no meio do rótulo que usei uma expressão comocoalesce("Temp Site", ' ') || coalesce(('\n' || "Notes"), ' ') || coalesce(('\n' || "Function"), ' ' )
Brian Fisher