A sintaxe da consulta QGIS difere entre a tabela de atributos e o filtro de recursos

11

Usando o QGIS 2.16.2, posso selecionar com êxito os registros de uma tabela de atributos shapefile usando a seguinte expressão:

left("start_time", 10) = '2015-08-01'

Observe que start_time é um campo de string.

No entanto, quando copio e colo a mesma expressão em Layer Properties> General> filter de recurso> Query Builder, recebo o seguinte erro:

insira a descrição da imagem aqui

Eu esperaria que a mesma expressão funcionasse em todos os lugares no QGIS. O que estou fazendo errado?

Stu Smith
fonte

Respostas:

12

Sua observação está correta. O Query Builder não usa a mesma sintaxe que o restante do QGIS.

Em todo o QGIS, a sintaxe é baseada no QGIS Expressions, em um dialeto SQL personalizado . Isso é portátil entre quase todas as partes do QGIS, onde você pode inserir um filtro, calcular um valor ... Essa sintaxe é analisada e avaliada diretamente no QGIS (e partes dela podem ser enviadas ao fornecedor algumas vezes).

O filtro de recurso do provedor definido por meio do construtor de consultas (também conhecido como cadeia de subconjuntos ) para a camada funciona de maneira diferente na maneira em que o QGIS não a vê. Tudo o que faz é enviá-lo ao provedor. Nesse caso, o provedor é OGR, que suporta apenas um subconjunto da sintaxe SQL, mas às vezes é muito poderoso, por exemplo, ao acessar um banco de dados postgres / postgis.

Matthias Kuhn
fonte
Bom saber. Usei a seguinte consulta no filtro e ela substituiu corretamente a seleção que eu tentei anteriormente: "start_time" CURTIR '2015-08-01%'
Stu Smith