Die QGIS-Abfragesyntax unterscheidet sich zwischen Attributtabelle und Feature-Filter

11

Mit QGIS 2.16.2 kann ich erfolgreich Datensätze aus einer Shapefile-Attributtabelle mit dem folgenden Ausdruck auswählen:

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

Bitte beachten Sie, dass start_time ein Zeichenfolgenfeld ist.

Wenn ich jedoch denselben Ausdruck kopiere und in die Layereigenschaften> Allgemein> Funktionsfilter> Abfrage-Generator des Shapefiles einfüge, wird die folgende Fehlermeldung angezeigt:

Geben Sie hier die Bildbeschreibung ein

Ich würde erwarten, dass der gleiche Ausdruck überall in QGIS funktioniert. Was mache ich falsch?

Stu Smith
quelle

Antworten:

12

Ihre Beobachtung ist richtig. Der Abfrage-Generator verwendet nicht dieselbe Syntax wie der Rest von QGIS.

In QGIS basiert die Syntax auf QGIS Expressions, einem angepassten SQL-Dialekt . Dies ist zwischen fast allen Teilen von QGIS portierbar, wo Sie einen Filter eingeben, einen Wert berechnen können ... Diese Syntax wird direkt in QGIS analysiert und ausgewertet (und Teile davon können manchmal an den Anbieter gesendet werden).

Der über den Abfrage-Generator (auch oft als Teilmengenzeichenfolge bezeichnet ) für den Layer definierte Anbieterfeature-Filter funktioniert anders, als QGIS ihn überhaupt nicht betrachtet. Alles was es tut, ist es an den Anbieter zu senden. In diesem Fall ist der Anbieter OGR, das nur eine Teilmenge der SQL-Syntax unterstützt, aber manchmal sehr leistungsfähig ist, z. B. beim Zugriff auf eine Postgres / Postgis-Datenbank.

Matthias Kuhn
quelle
Gut zu wissen. Ich habe die folgende Abfrage im Filter verwendet und sie hat die zuvor versuchte Auswahl korrekt ersetzt: "start_time" LIKE '2015-08-01%'
Stu Smith