Suchen und Ersetzen im QGIS-Feldrechner durchführen?

8

Ich versuche, ausgewählte Zeichenfolgenwerte in einer Attributtabelle zu ersetzen, z. "Text1" für "Text2" (QGIS 1.8.0), Patrizier für die Zeilen mit NULL-Werten. Ich habe versucht, den Ersetzungsausdruck (und jeden anderen, den ich gefunden habe) ohne Glück zu verwenden.

Gibt es Platzhalterzeichen, die ich möglicherweise in Zukunft verwenden kann?

mastorey
quelle
1
Überprüfen Sie auch die Funktion regexp_replace (), wie in gis.stackexchange.com/questions/40637/…
underdark
Was ist, wenn Sie Spalte1 basierend auf einer Matrix aus Spalte 1 und Spalte 2 ersetzen möchten? So etwas wie: Spalte1 mit 100 verschiedenen Kombinationen von 10 Ziffern, 10x10 = 100 - Matrix) für jeden Wert der Spalte2 (insgesamt: 1000 Ersetzungen). Spalte 2 variiert von '1 bis 10'. Für jeden Wert von collumn2 möchte ich eine Ersetzung innerhalb dieser beiden Matrixwerte : ! [Bildbeschreibung hier eingeben ] ( i.stack.imgur.com/GnGU6.png )
Rui

Antworten:

11

Sie könnten einen Fall versuchen, wenn Ausdruck:

case when "Column_1" is NULL then  replace("Column_2",'Text2','Text1') else "Column_2" end

Mit dem Ausdruck 'oder' können Sie dem Code mehrere Spalten mit NULL-Werten hinzufügen.

case when "Column_1" is NULL or "Column_3" is NULL then  replace("Column_2",'Text2','Text1') else "Column_2" end

bearbeiten:

Wenn Sie NULL ersetzen möchten, vergessen Sie den Ersetzungsausdruck (er funktioniert nur für Zeichenfolgen und NULL ist keine Zeichenfolge). Versuchen Sie genau diesen Code:

case when "Feature" is NULL then '12_1' else "Feature" end
GR_
quelle
Danke für die schnelle Antwort. Wie würde der Ausdruck "case when" funktionieren, wenn nur Werte in einem Feld aktualisiert werden sollen, anstatt ein neues Feld zu erstellen?
Mastorey
Wählen Sie einfach das gewünschte Feld im Feldrechner aus, anstatt "Neues Feld erstellen" zu wählen. Der Code bleibt gleich.
GR_
Danke noch einmal. Ich denke, das Problem könnte in der Tatsache liegen, dass meine Attributtabelle nur ein Feld hat? Ich versuche, die Werte ausgewählter Polygone zu aktualisieren, dh von einem NULL-Wert auf ein einzelnes alphanumerisches Tag. Ich frage mich, was auch immer mit der Funktion "Suchen und Ersetzen" früherer QGIS-Versionen geschehen ist.
Mastorey
1
Dies sollte den Trick machen: Fall, wenn "Column_1" NULL ist, dann 'Text1' sonst "Column_1" endet
GR_
Danke, aber ich bekomme immer noch keine Änderungen an der Attributtabelle. Basierend auf dem von Ihnen vorgeschlagenen Code gebe ich Folgendes ein: Wenn "Feature" NULL ist, ersetzen Sie ("Feature", "NULL", "12_1"), andernfalls habe ich auch versucht, "Feature" auszudrücken NULL als 'NULL' und '' ohne Erfolg. Jede weitere Hilfe wäre sehr willkommen und sehr dankbar.
Mastorey
-2

Wenn "Feature" "TEXT 1" ist, endet "TEXT 2", andernfalls "Feature"

Arbeite für mich. Die Interpretation des NULL-Werts scheint Probleme aufzuwerfen. Eine mögliche Lösung besteht darin, die Tabelle mit einem neutralen Wert zu initialisieren, der sich von NULL unterscheidet.

Panait Valentin
quelle
2
Könnten Sie dies erweitern, um zu erklären, wie dies die Frage nach Platzhaltern beantwortet?
MaryBeth
Nun, NULL ist nur ein Ersatz für die leeren Felder. Das Problem ist, wie QGIS den NULL-Wert sieht, wenn Sie "Feldrechner" verwenden. Als NULL oder leeres Feld ''.
Panait Valentin
Aber auf den leeren Feldern '' können keine BOOLEAN-Operationen ausgeführt werden und dies ist das größte Problem.
Panait Valentin
Fall, wenn "GridRef" NULL ist, dann 0 sonst "GridRef" Ende - Endlich hat es funktioniert. aber warum ... bitte nicht fragen;)))
Panait Valentin