PostgreSQL:使用子句词作为列名
PostgreSQL: Using clause words as column names
前言:
我正在使用 OSM2PGSQL 将我的 OpenStreetMap(OSM) 数据导入 PostgreSQL。这会导入与数据中每个元素关联的所有标签,其中之一是 "natural" 标签。这个标签定义了这个区域是什么类型的地形。 (IE,自然=水意味着这个坐标定义了一个水域)。
我正在尝试访问表示为 "natural" 的列,例如在查询
中
SELECT * FROM planet_osm_polygon WHERE natural='water' LIMIT 100;
但是,由于NATURAL也是一个PostgresSQL子句,查询returns出错。
有办法解决这个问题吗?我试过用引号将 natural 这个词括起来,但没有用。
双引号应该可以。这是我用来验证的一个简单示例
# 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)
前言: 我正在使用 OSM2PGSQL 将我的 OpenStreetMap(OSM) 数据导入 PostgreSQL。这会导入与数据中每个元素关联的所有标签,其中之一是 "natural" 标签。这个标签定义了这个区域是什么类型的地形。 (IE,自然=水意味着这个坐标定义了一个水域)。
我正在尝试访问表示为 "natural" 的列,例如在查询
中SELECT * FROM planet_osm_polygon WHERE natural='water' LIMIT 100;
但是,由于NATURAL也是一个PostgresSQL子句,查询returns出错。
有办法解决这个问题吗?我试过用引号将 natural 这个词括起来,但没有用。
双引号应该可以。这是我用来验证的一个简单示例
# 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)