Teradata查询
select F.farm_id, F.name, CASE WHEN geography.ST_GeometryType() = 'ST_POINT' THEN geography.ST_X() ELSE geography.ST_Centroid().ST_X() END as LNG, CASE WHEN geography.ST_GeometryType() = 'ST_POINT' THEN geography.ST_Y() ELSE geography.ST_Centroid().ST_Y() END as LAT from V_farm F, V_farm_workforce FW where F.farm_id=FW.farm_id and FW.account_id='bf064695-b9e3-46a2-a665-0bb794073ae3' and geography is not null
在Teradata中运行以上查询时获得以下响应
FarmId Name LNG LAT
-----------------------------------------------------------------------------------------------------------
ea66e27f-eba4-4750-bd85-2a1e96941b10 Farm099 -88.9495943 33.5847365
2be7e35e-74a7-49eb-9e9d-5b65dbbf7c5e VFarmJuly23 -106.6409198 31.8018379
56982275-bcad-40f7-83db-5dbfd9f9c82c Farm112 -88.95096260000003 33.601958
相同的查询,如果我在H2中运行得到以下错误
Function "ST_GEOMETRYTYPE" not found; SQL statement:
您能否建议如何在H2数据库中进行操作。
答案 0 :(得分:1)
H2数据库只能存储和查询Geometry类型。
H2数据库中的空间函数可在H2GIS库中找到。该库是H2数据库的空间扩展。它为SQL标准提供了所有OGC的简单功能。
此查询中的结果应该相同
select F.farm_id, F.name, ST_X(ST_CENTROID(THE_GEOM)) as LNG,
ST_Y(ST_CENTROID(THE_GEOM)) as LAT
from V_farm F, V_farm_workforce FW
where F.farm_id=FW.farm_id
and FW.account_id='bf064695-b9e3-46a2-a665-0bb794073ae3'
and the_geom is not null
某点的ST_CENTROID会返回该点。