Melakukan pencarian dan ganti dalam kalkulator bidang QGIS?

8

Saya mencoba mengganti nilai string yang dipilih dalam tabel atribut, misalnya. "Text1" untuk "Text2" (QGIS 1.8.0), patriculary untuk baris-baris dengan nilai NULL. Saya telah mencoba menggunakan ekspresi ganti (dan yang lainnya yang saya temukan) tanpa hasil.

Apakah ada karakter pengganti yang dapat saya gunakan di masa mendatang?

mastorey
sumber
1
periksa juga fungsi regexp_replace () seperti dijelaskan dalam gis.stackexchange.com/questions/40637/…
underdark
Bagaimana jika ingin mengganti collumn1 berdasarkan matriks yang dibentuk sebelumnya oleh collumn 1 dan collumn 2. Sesuatu seperti ini: collumn1 memiliki 100 kombinasi yang berbeda dari 10 digit, 10x10 = 100 - matrix) untuk setiap nilai collumn2 (total: 1000 pengganti). Kolom2 bervariasi dari '1 hingga 10'. Untuk setiap nilai collumn2 saya ingin substitusi dalam dua nilai matriks ini :! [Masukkan deskripsi gambar di sini ] ( i.stack.imgur.com/GnGU6.png )
Rui

Jawaban:

11

Anda dapat mencoba kasus saat berekspresi:

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

Menggunakan ekspresi 'atau', Anda dapat menambahkan beberapa kolom dengan nilai NULL ke kode.

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

edit:

Jika Anda ingin mengganti NULL, lupakan ekspresi-ganti (ini hanya berfungsi untuk string dan NULL bukan string). Coba kode persis ini:

case when "Feature" is NULL then '12_1' else "Feature" end
GR_
sumber
Terima kasih atas balasan yang cepat. Bagaimana ungkapan 'case when' berfungsi ketika hanya ingin memperbarui nilai dalam bidang, daripada membuat bidang baru?
mastorey
Cukup pilih bidang yang Anda inginkan di Kalkulator Bidang alih-alih memilih "Buat bidang baru". Kode tetap sama.
GR_
Terima kasih lagi. Saya pikir masalahnya mungkin terletak pada kenyataan bahwa tabel atribut saya hanya memiliki satu bidang? Saya mencoba memperbarui nilai poligon yang dipilih, yaitu dari nilai NULL ke tag alfanumerik tunggal. Apa pun, saya bertanya-tanya, senang dengan fungsi 'temukan dan ganti' dari rilis QGIS sebelumnya.
mastorey
1
Ini harus melakukan trik: kasus ketika "Column_1" adalah NULL kemudian 'Text1' lain "Column_1" berakhir
GR_
Terima kasih, tetapi saya masih belum mendapatkan perubahan pada tabel atribut. Berdasarkan kode yang Anda sarankan, saya memasukkan yang berikut: kasus ketika "Fitur" NULL kemudian ganti ("Fitur", 'NULL', '12_1') lain "Fitur" akhirnya saya juga mencoba untuk mengekspresikan NULL karena 'NULL' dan '' tanpa hasil. Setiap bantuan lebih lanjut akan sangat disambut dan sangat dihargai.
mastorey
-2

kasus ketika "Fitur" adalah "TEXT 1" lalu 'TEXT 2' lain "Fitur" berakhir

Bekerja untuk saya. Interpretasi nilai NULL tampaknya memunculkan masalah. Salah satu solusi yang mungkin adalah menginisialisasi tabel dengan nilai netral yang berbeda dari NULL.

Panait Valentin
sumber
2
Bisakah Anda memperluas ini untuk menjelaskan bagaimana ini menjawab pertanyaan tentang wildcard?
MaryBeth
Nah, NULL hanyalah pengganti untuk bidang kosong. Masalahnya adalah bagaimana QGIS melihat nilai NULL saat Anda menggunakan "Kalkulator Bidang." Sebagai NULL atau isian kosong ''.
Panait Valentin
Tetapi di bidang yang kosong '' tidak dapat dilakukan operasi BOOLEAN dan ini adalah masalah terbesar.
Panait Valentin
kasus ketika "GridRef" adalah NULL maka 0 selain itu "GridRef" end - Akhirnya berhasil. tapi kenapa ... tolong jangan tanya;)))
Panait Valentin