QGIS查询语法在属性表和要素过滤器之间有所不同


11

使用QGIS 2.16.2,我可以使用以下表达式从shapefile属性表中成功选择记录:

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

请注意,start_time是一个字符串字段。

但是,当我将相同的表达式复制并粘贴到shapefile的“图层属性”>“常规”>“特征过滤器”>“查询生成器”中时,出现以下错误:

在此处输入图片说明

我希望在QGIS中的任何地方都可以使用相同的表达式。我究竟做错了什么?

Answers:


12

您的观察是正确的,查询生成器没有使用与其他QGIS相同的语法。

在整个QGIS中,语法基于QGIS表达式和自定义的SQL方言。它可以在QGIS的几乎所有部分之间移植,您可以在其中输入过滤器,计算值...该语法在QGIS中直接解析和评估(有时可能会将其部分发送给提供程序)。

通过查询构建器(也通常称为子集字符串)为该层定义的提供者功能过滤的工作方式有所不同,QGIS根本不看它。它所做的只是将其发送给提供程序。在这种情况下,提供程序是OGR,它仅支持SQL语法的子集,但有时功能非常强大,例如,在访问postgres / postgis数据库时。


很高兴知道。我在过滤器中使用了以下查询,它正确替换了我先前尝试的选择:“ start_time” LIKE'2015-08-01%'
Stu Smith
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.