La syntaxe de requête QGIS diffère entre la table d'attributs et le filtre d'entités

11

À l'aide de QGIS 2.16.2, je peux sélectionner avec succès des enregistrements dans une table d'attributs de fichiers de formes à l'aide de l'expression suivante:

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

Veuillez noter que start_time est un champ de chaîne.

Cependant, lorsque je copie et colle la même expression dans les propriétés de calque du fichier de formes> Général> filtre de fonctionnalité> Générateur de requêtes, j'obtiens l'erreur suivante:

entrez la description de l'image ici

Je m'attendrais à ce que la même expression fonctionne partout dans QGIS. Qu'est-ce que je fais mal?

Stu Smith
la source

Réponses:

12

Votre observation est correcte, le générateur de requêtes n'utilise pas la même syntaxe que le reste de QGIS.

Tout au long de QGIS, la syntaxe est basée sur les expressions QGIS, un dialecte SQL personnalisé . C'est portable entre presque toutes les parties de QGIS où vous pouvez entrer un filtre, calculer une valeur ... Cette syntaxe est analysée et évaluée directement dans QGIS (et certaines parties peuvent parfois être envoyées au fournisseur).

Le filtre de fonctionnalité du fournisseur défini via le générateur de requêtes (également souvent appelé chaîne de sous-ensemble ) pour la couche fonctionne différemment dans la manière dont QGIS ne le regarde pas du tout. Il ne fait que l'envoyer au fournisseur. Dans ce cas, le fournisseur est OGR qui ne prend en charge qu'un sous-ensemble de la syntaxe SQL mais parfois il est très puissant, par exemple lors de l'accès à une base de données postgres / postgis.

Matthias Kuhn
la source
Bon à savoir. J'ai utilisé la requête suivante dans le filtre et elle a correctement remplacé la sélection que j'ai précédemment essayée: "start_time" LIKE '2015-08-01%'
Stu Smith