我想知道是否有人可以知道PostgreSQL 9.2中hstore
列上的这个简单查询出了什么问题
查询在pgAdmin
中运行select attributeValue->"CODE_MUN" from shapefile_feature
返回:«attributevalue»列不存在
做的时候:
select * from shapefile_feature;
返回所有列,包括attributeValue,hstore列
问题是什么?
答案 0 :(得分:4)
PostgreSQL区分“标识符”和“文字”。标识符是模式,表,列,...名称,文字是其他标识符。 hstore中的属性不是SQL标识符。所以你必须将他们的名字作为文字。运营商“ - >”只是函数“fetchval(hstore,text)”的快捷方式,可以编制索引。
select attributeValue->'CODE_MUN' from shapefile_feature
在内部转换为(不要自己做这个转换!)
select fetchval(attributeValue, 'CODE_MUN') from shapefile_feature
关于转换形式的错误示例,您可以更好地理解错误消息:
select fetchval(attributeValue, "CODE_MUN") from shapefile_feature
PostgreSQL尝试在shapefile_feature中找到列“CODE_MUN”,因为使用双引号表示标识符(如果是敏感表示法)。