[FOSSGIS-Talk] Übertragung zwischen Feldern; Umlaute

Bernd Marcus bmarcus at giswana.de
Fr Apr 30 15:36:31 CEST 2021


Hallo Eckhard,

etwas kürzer als der Ausdruck, den Claas dir vorgeschlagen hat:

coalesce("Feld2", "Feld1")

Übersetzt bedeutet dies: wenn "Feld2" einen Wert aufweist, wird der 
Wert von "Feld2" genommen; weist "Feld2" jedoch NULL auf, wird auf 
"Feld1" zurückgegriffen.

Wichtig: dies funktioniert nur, wenn das 'leer' deiner Anfrage mit 
NULL gleichzusetzen ist. 
Handelt es sich um Text-Spalten, so solltest du, wie von Claas 
vorgeschlagen, eine Bedingung nutzen. Ob CASE oder IF ist reine 
Geschmackssache:

if length( trim("Feld1") ) > 0, "Feld1" , "Feld2")

Erklärung: wenn die Länge des um Leerzeichen bereinigten "Feld1" 
größer 0, dann Wert von "Feld1" sonst Wert von "Feld2".
Der TRIM Befehl besitzt den Vorteil, dass man sich keinen Kopf drum 
machen muss, ob ein leer erscheinendes Textfeld nicht evtl. doch ein 
oder mehrere Leerzeichen aufweist.
Der IF Ausdruck funktioniert natürlich auch bei NULL Werten, denn 
NIx gibt Nix zurück, also NULL und somit wird die Bedingung von der 
Länge größer 0 nicht erfüllt. 


Euch eine gute Zeit

Bernd Marcus
__________________________________

GISwana - Datentektonik

Am Steneberg 10 | D-37133 Friedland

T: +49 (0)5504 949 844 7
M: +49 (0)176 816 991 64
@: bmarcus at giswana.de
U: https://www.giswana.de/





Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste