【问题标题】:syntax error at or near "Z" when trying to create materialized view尝试创建物化视图时在“Z”处或附近出现语法错误
【发布时间】:2020-07-20 17:37:21
【问题描述】:

我有以下疑问:

CREATE MATERIALIZED VIEW tk AS
SELECT * 
FROM base
WHERE ST_Contains(geo, POLYGON Z ((...some values ...)))

但我遇到了错误:

syntax error at or near "Z"

geo 字段为 geometry 字段类型

问题是什么以及如何解决?

【问题讨论】:

  • PolygonZ 不是Polygon Z

标签: postgresql postgis


【解决方案1】:

您的查询缺少单引号:

例子:

CREATE TABLE base (geo geometry);
INSERT INTO base VALUES ('POLYGONZ((1 0 0, 0 5 0, 5 5 0, 5 0 0, 1 0 0))');

CREATE MATERIALIZED VIEW tk AS
SELECT * FROM base
WHERE 
  ST_Contains (geo,'POLYGONZ((2.51 3.33 1,2.07 2.24 1,3.28 2.26 1,2.51 3.33 1))');

SELECT ST_AsText(geo) FROM tk;

                  st_astext                  
---------------------------------------------
 POLYGON Z ((1 0 0,0 5 0,5 5 0,5 0 0,1 0 0))
(1 Zeile)

注意ST_Contains 的文档没有提到任何关于在函数中计算Z 维度的内容。因此我们可以假设它被简单地忽略了,查询只考虑了XY

【讨论】:

    猜你喜欢
    • 2018-10-15
    • 2016-03-21
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多