2016-03-22 18 views
0

前言: 我正在使用OSM2PGSQL將我的OpenStreetMap(OSM)數據導入到PostgresSQL中。這會導入與數據中每個元素相關聯的所有標籤,其中之一是「自然」標籤。這個標籤定義了這個區域是什麼類型的地形。 (IE,自然=水意味着這個座標定義了一個水域)。PostgresSQL:使用子句詞作爲列名

我試圖訪問標記爲「天然」,列如查詢

SELECT * FROM planet_osm_polygon WHERE natural='water' LIMIT 100; 

然而,由於自然也是PostgreSQL的條款,該查詢返回一個錯誤。

會有解決此問題的方法嗎?我嘗試用引號將自然這個詞包裝起來,但都無濟於事。

+1

你試過雙引號嗎? 「natural」='water' – Trent

+0

這在手冊中有詳細說明:http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS –

回答

1

雙引號應該工作。這裏是我用來驗證的一個簡單例子

# create table test123("natural" text); 
CREATE TABLE 
# insert into test123 values('test'); 
INSERT 0 1 
# insert into test123 values('water'); 
INSERT 0 1 
# select * from test123 where "natural"='water'; 
natural 
--------- 
water 
(1 row) 
+1

啊,可怕的單引號和雙引號,好吧,我現在看起來很傻。 –