OSM数据的Postgis SQL语句出错



我正试图使用连接到PostGIS数据库的QGIS中的DB Manager在OSM多边形数据中选择一个特定值。当我键入时

SELECT * 
FROM planet_osm_polygon 
WHERE landuse is not null 

此SQL语句有效。它给了我所有具有土地使用价值的行。

但是,如果将landuse替换为natural(这是另一个列名(,则会显示一条错误消息。例如,我使用了另一个列名leisure。我得到了查询结果。

我不知道为什么不能使用natural列标题名称。任何解决此错误的线索都将不胜感激。

natural是一个保留关键字,因此需要将其括起来,并使用双引号:

SELECT * FROM osm_polygons WHERE "natural" is not null;

PS:如果列名中有分号,也是如此:

SELECT * FROM osm_polygons WHERE "addr:housenumber" is not null;

最新更新