【问题标题】:PostgreSQL: Using clause words as column namesPostgreSQL:使用子句作为列名
【发布时间】:2016-03-22 21:58:26
【问题描述】:

前言: 我正在使用 OSM2PGSQL 将我的 OpenStreetMap(OSM) 数据导入 PostgreSQL。这会导入与数据中每个元素相关联的所有标签,其中之一是“自然”标签。这个标签定义了这个区域是什么类型的地形。 (即,自然=水意味着这个坐标定义了一片水域)。

我正在尝试访问标记为“自然”的列,例如在查询中

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

但是,因为 NATURAL 也是 PostgresSQL 子句,所以查询返回错误。

有没有办法解决这个问题?我试过用引号将自然这个词括起来,但无济于事。

【问题讨论】:

标签: postgresql openstreetmap postgis


【解决方案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)

【讨论】:

  • 啊,可怕的单引号和双引号,我现在看起来不傻。
猜你喜欢
  • 2011-03-15
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多