Синтаксис запроса QGIS отличается между таблицей атрибутов и фильтром объектов

11

Используя QGIS 2.16.2, я могу успешно выбирать записи из таблицы атрибутов шейп-файла, используя следующее выражение:

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

Обратите внимание, что start_time является строковым полем.

Однако, когда я копирую и вставляю одно и то же выражение в Свойства слоя шейп-файла> Общие> Фильтр объектов> Построитель запросов, я получаю следующую ошибку:

введите описание изображения здесь

Я ожидаю, что одно и то же выражение будет работать везде в QGIS. Что я делаю не так?

Стю Смит
источник

Ответы:

12

Ваши наблюдения верны, построитель запросов не использует тот же синтаксис, что и остальная часть QGIS.

В QGIS синтаксис основан на выражениях QGIS, настроенных на диалекте SQL . Это переносимо между почти всеми частями QGIS, где вы можете ввести фильтр, вычислить значение ... Этот синтаксис анализируется и оценивается непосредственно в QGIS (и его части иногда могут отправляться поставщику).

Особенность поставщик фильтр определяется с помощью конструктора запросов (также часто называют подмножество строки ) для слоя работает отличается тем , что QGIS не смотрит на него вообще. Все, что он делает, это отправляет его поставщику. В этом случае провайдером является OGR, который поддерживает только подмножество синтаксиса SQL, но иногда он очень мощный, например, при доступе к базе данных postgres / postgis.

Матиас Кун
источник
Хорошо знать. Я использовал следующий запрос в фильтре, и он правильно заменил выбор, который я пробовал ранее: «start_time» LIKE «2015-08-01%»
Stu Smith,