Składnia zapytania QGIS różni się między tabelą atrybutów a filtrem funkcji

11

Korzystając z QGIS 2.16.2, mogę z powodzeniem wybierać rekordy z tabeli atrybutów shapefile, używając następującego wyrażenia:

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

Pamiętaj, że czas_początkowy jest polem ciągowym.

Jednak po skopiowaniu i wklejeniu tego samego wyrażenia do Właściwości warstwy pliku kształtu> Ogólne> filtr funkcji> Konstruktor zapytań pojawia się następujący błąd:

wprowadź opis zdjęcia tutaj

Spodziewałbym się, że to samo wyrażenie będzie działać wszędzie w QGIS. Co ja robię źle?

Stu Smith
źródło

Odpowiedzi:

12

Twoja obserwacja jest poprawna, Konstruktor kwerend nie używa tej samej składni, co reszta QGIS.

W całym systemie QGIS składnia oparta jest na wyrażeniach QGIS - dostosowanym dialekcie SQL . Jest to przenośne między prawie wszystkimi częściami QGIS, gdzie można wprowadzić filtr, obliczyć wartość ... Ta składnia jest analizowana i przetwarzana bezpośrednio w QGIS (a jej część może być czasami wysyłana do dostawcy).

Filtr cecha zapewniająca zdefiniowane poprzez kreator zapytań (często określane jako podzbiór ciąg ) dla warstwy działa inaczej w sposób QGIS nie patrzy na niego w ogóle. Wystarczy wysłać go do dostawcy. W tym przypadku dostawcą jest OGR, który obsługuje tylko podzbiór składni SQL, ale czasami jest bardzo wydajny, np. Podczas uzyskiwania dostępu do bazy danych postgres / postgis.

Matthias Kuhn
źródło
Dobrze wiedzieć. Użyłem następującego zapytania w filtrze i poprawnie zastąpiło zaznaczenie, które wcześniej wypróbowałem: „start_time” LIKE '2015-08-01%'
Stu Smith,