Realizando localizar e substituir na calculadora de campo QGIS?

8

Estou tentando substituir os valores de seqüência de caracteres selecionados em uma tabela de atributos, por exemplo. "Texto1" para "Texto2" (QGIS 1.8.0), normalmente para aquelas linhas com valores NULL. Eu tenho tentado usar a expressão de substituição (e qualquer outra que eu encontrei) sem sorte.

Existem caracteres curinga que eu possa usar no futuro?

mastorey
fonte
1
verifique também a função regexp_replace () conforme descrito em gis.stackexchange.com/questions/40637/…
underdark
E se quiser substituir a coluna1 com base em uma matriz pré-formada pela coluna 1 e pela coluna 2. Algo assim: coluna1 com 100 combinações diferentes de 10 dígitos, 10x10 = 100 - matriz) para cada valor da coluna2 (total: 1000 substituições). Coluna2 variando de '1 a 10'. Para cada valor de collumn2 eu quero uma substituição dentro desses dois valores da matriz: [inserir descrição da imagem aqui! ] ( I.stack.imgur.com/GnGU6.png )
Rui

Respostas:

11

Você pode tentar um caso quando expressão:

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

Usando a expressão 'ou', você pode adicionar várias colunas com valores NULL ao código.

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

editar:

Se você deseja substituir NULL, esqueça a expressão de substituição (ela funciona apenas para strings e NULL não é string). Tente este código exato:

case when "Feature" is NULL then '12_1' else "Feature" end
GR_
fonte
Obrigado pela resposta rápida. Como a expressão 'case when' funcionaria ao simplesmente querer atualizar valores em um campo, em vez de criar um novo campo?
mastorey 02/12/12
Basta selecionar o campo desejado na Calculadora de Campos em vez de escolher "Criar novo campo". O código permanece o mesmo.
GR_ 02/12/12
Obrigado novamente. Eu acho que o problema pode estar no fato de que minha tabela de atributos possui apenas um campo? Estou tentando atualizar os valores dos polígonos selecionados, ou seja, de um valor NULL para uma única marca alfanumérica. Gostaria de saber o que aconteceu com a função 'localizar e substituir' das versões anteriores do QGIS.
mastorey
1
Isso deve funcionar: caso quando "Coluna_1" for NULL, então 'Text1' else "Coluna_1" termina
GR_ 02/12/12
Obrigado, mas ainda não estou recebendo nenhuma alteração na tabela de atributos. Com base no código que você sugeriu, insiro o seguinte: caso quando "Recurso" for NULL, substitua ("Recurso", 'NULL', '12_1') else "Recurso" end Também tentei expressar NULL como 'NULL' e '' sem sucesso. Qualquer ajuda adicional seria muito bem-vinda e muito apreciada.
mastorey
-2

caso quando "Recurso" for "TEXTO 1" e depois "TEXTO 2" ou "Recurso" final

Trabalhe para o meu. A interpretação do valor NULL parece suscitar problemas. Uma solução possível é inicializar a tabela com um valor neutro diferente de NULL.

Panait Valentin
fonte
2
Você poderia expandir isso para explicar como isso responde à pergunta sobre caracteres curinga?
MaryBeth
Bem, NULL é apenas um substituto para os campos vazios. O problema é como o QGIS vê o valor NULL quando você usa a "Calculadora de Campo". Como campo nulo ou vazio ''.
Panait Valentin 21/03
Mas nos campos vazios '' não podem ser realizadas operações BOOLEAN e esse é o maior problema.
Panait Valentin 21/03
caso quando "GridRef" for NULL, então 0 mais "GridRef" end - Finalmente funcionou. mas por que ... por favor, não pergunte;)))
Panait Valentin 21/03