Sintaks kueri QGIS berbeda antara tabel atribut dan filter fitur

11

Menggunakan QGIS 2.16.2, saya bisa berhasil memilih catatan dari tabel atribut shapefile menggunakan ekspresi berikut:

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

Harap perhatikan bahwa start_time adalah bidang string.

Namun, ketika saya menyalin dan menempelkan ekspresi yang sama ke dalam properti Layer Properties> General> filter fitur> Query Builder, saya mendapatkan kesalahan berikut:

masukkan deskripsi gambar di sini

Saya berharap bahwa ungkapan yang sama akan bekerja di mana pun di QGIS. Apa yang saya lakukan salah?

Stu Smith
sumber

Jawaban:

12

Pengamatan Anda benar, Pembuat Kueri tidak menggunakan sintaksis yang sama dengan QGIS lainnya.

Sepanjang QGIS, sintaksinya didasarkan pada QGIS Expressions, dialek SQL yang disesuaikan . Ini portabel antara hampir semua bagian QGIS di mana Anda dapat memasukkan filter, menghitung nilai ... Sintaks ini diuraikan dan dievaluasi langsung dalam QGIS (dan kadang-kadang sebagian dikirim ke penyedia).

The Filter Fitur penyedia didefinisikan melalui query builder (juga sering disebut sebagai bagian tali ) untuk lapisan bekerja berbeda dalam cara yang QGIS tidak melihat sama sekali. Yang dilakukannya hanyalah mengirimkannya ke penyedia. Dalam hal ini provider adalah OGR yang hanya mendukung sebagian dari sintaks SQL tetapi kadang-kadang sangat kuat, misalnya ketika mengakses database postgres / postgis.

Matthias Kuhn
sumber
Senang mendengarnya. Saya menggunakan kueri berikut dalam filter, dan itu dengan benar menggantikan pilihan yang sebelumnya saya coba: "start_time" LIKE '2015-08-01%'
Stu Smith