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


11

Використовуючи QGIS 2.16.2, я можу успішно вибрати записи з таблиці атрибутів shapefile, використовуючи таке вираження:

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

Зверніть увагу, що start_time - це рядок.

Однак, коли я копіюю та вставляю той самий вираз у властивості шару формфайлу> Загальне> фільтр особливостей> Конструктор запитів, я отримую таку помилку:

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

Я би сподівався, що один і той же вираз буде працювати всюди в QGIS. Що я роблю неправильно?

Відповіді:


12

Ваше спостереження правильне, Builder Query не використовує той самий синтаксис, як решта QGIS.

Протягом QGIS синтаксис ґрунтується на QGIS виразах на спеціальному діалекті SQL . Це портативно між майже всіма частинами QGIS, де ви можете ввести фільтр, обчислити значення ... Цей синтаксис аналізується та оцінюється безпосередньо в QGIS (і його частини іноді можуть надсилатися постачальнику).

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


Добре знати. Я використовував наступний запит у фільтрі, і він правильно замінив вибір, який я раніше спробував: "start_time" LIKE '2015-08-01%'
Стю Сміт,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.