首页 > 解决方案 > OSM 数据的 Postgis SQL 语句中的错误

问题描述

我正在尝试使用连接到 PostGIS 数据库的 QGIS 中的 DB 管理器在 OSM 多边形数据中选择一个特定值。当我输入

SELECT * 
FROM planet_osm_polygon 
WHERE landuse is not null 

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

但是,如果我替换landusenatural(这是另一个列名),它会给我一条错误消息。例如,我使用了另一个列名leisure。我得到查询结果。

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

标签: postgresqlpostgisopenstreetmapwhere-clause

解决方案


natural是一个保留关键字,所以你需要用双引号括起来:

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

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

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

推荐阅读