La sintassi della query QGIS differisce tra la tabella degli attributi e il filtro delle funzionalità


11

Utilizzando QGIS 2.16.2, posso selezionare correttamente i record da una tabella degli attributi shapefile usando la seguente espressione:

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

Nota che start_time è un campo stringa.

Tuttavia, quando copio e incollo la stessa espressione in Proprietà layer del file di forma> Generale> filtro funzionalità> Generatore di query, viene visualizzato il seguente errore:

inserisci qui la descrizione dell'immagine

Mi aspetto che la stessa espressione funzionerebbe ovunque in QGIS. Che cosa sto facendo di sbagliato?

Risposte:


12

La tua osservazione è corretta, The Query Builder non utilizza la stessa sintassi del resto di QGIS.

In QGIS, la sintassi si basa sulle espressioni QGIS un dialetto SQL personalizzato . È portatile tra quasi tutte le parti di QGIS in cui è possibile inserire un filtro, calcolare un valore ... Questa sintassi viene analizzata e valutata direttamente in QGIS (e alcune parti possono essere inviate al provider a volte).

Il filtro delle funzionalità del provider definito tramite il generatore di query (spesso indicato anche come stringa di sottoinsieme ) per il livello funziona in modo diverso dal modo in cui QGIS non lo osserva affatto. Tutto ciò che fa è inviarlo al provider. In questo caso il provider è OGR che supporta solo un sottoinsieme della sintassi SQL ma a volte è molto potente, ad esempio quando si accede a un database postgres / postgis.


Buono a sapersi. Ho usato la seguente query nel filtro e ha sostituito correttamente la selezione che ho provato in precedenza: "start_time" COME '2015-08-01%'
Stu Smith
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.