2016-03-22 10 views
0

Vorwort: Ich verwende OSM2PGSQL, um meine OpenStreetMap (OSM) -Daten in PostgresSQL zu importieren. Dadurch werden alle Tags importiert, die den einzelnen Elementen in den Daten zugeordnet sind. Eines davon ist das "Natural" -Tag. Dieses Tag definiert, um welches Terrain es sich handelt. (IE, natürlich = Wasser bedeutet, dass diese Koordinate eine Wasserfläche definiert).PostgresSQL: Verwenden von Klauselwörtern als Spaltennamen

Ich versuche, die Spalte als „natürlich“ bezeichnet zuzugreifen, wie in der Abfrage

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

Da jedoch NATURAL auch eine PostgresSQL Klausel ist, die Abfrage einen Fehler zurückgibt.

Wäre es möglich, dieses Problem zu umgehen? Ich habe versucht, das Wort natürlich in Anführungszeichen zu schreiben, ohne Erfolg.

+1

Haben Sie doppelte Anführungszeichen versucht? "natural" = "water" – Trent

+0

Dies wird im Handbuch ausführlich erklärt: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS –

Antwort

1

Doppelzitate sollten funktionieren. Hier ist ein schnelles Beispiel, das ich verifiziert habe

# 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

Ah, die gefürchtete Single vs doppelte Anführungszeichen, nun, ich sehe nicht albern jetzt aus. –