Mam dwie kolumny w mojej tabeli atrybutów QGIS. Pierwsza kolumna zawiera wartości, które nie są zawarte w drugiej kolumnie i na odwrót. Chciałbym dodać nowe pole, które zawiera zarówno wartości z pierwszej, jak i drugiej kolumny. Pomyślałem, że może to być tak proste jak „Wartość 1 + Wartość 2), ale daje mi to po prostu wyniki Null . Wszystkie wartości są ciągami znaków.
Value 1| Value 2 | New Column
-------------------------
Bacon | | Bacon
Eggs | | Eggs
| Cheese | Cheese
| Ham | Ham
qgis
attribute-table
Dunuts
źródło
źródło
Odpowiedzi:
Wiele operatorów i funkcji w SQL (a zatem i wyrażeniach) zwraca wartość,
NULL
jeśli był to jeden z parametrówNULL
Poniższe przykłady pokazują zachowanie różnych operatorów na warstwie z kolumnami
A
iB
."A" + "B"
NULL + 'text'
➝NULL
'a' + 'b'
➝'ab'
"A" || "B"
NULL || 'text'
➝NULL
'a' || 'b'
➝'ab'
CONCAT("A", "B")
CONCAT(NULL, 'text')
➝'text'
CONCAT('a', 'b')
➝'ab'
COALESCE("A", "B")
COALESCE(NULL, 'text')
➝'text'
COALESCE('a', 'b')
➝'a'
COALESCE('a', NULL)
➝'a'
COALESCE(NULL, NULL, 'Other')
➝'Other'
W twoim przypadku chcesz pracować z jednym
CONCAT
lub wCOALESCE
zależności od oczekiwanego zachowania z wieloma wartościami / bez.źródło
Możesz użyć kalkulatora pola i wykonać następujące kroki:
1- Utwórz nowe pole (ciąg)
2 - Użyj funkcji „Coalesce”
Funkcja Colaesce zwraca pierwszą wartość inną niż NULL
źródło
Wybierz warstwę w panelu warstw, otwórz konsolę python i uruchom ten fragment:
źródło
Możesz także użyć kalkulatora pola, dodać nowe pole i nakarmić go następującymi
źródło