我尝试:
SELECT
,6 AS ObjectTypeId
,[GeomColumn] AS geom
FROM [dbo].[myTable1]
UNION
SELECT
,objTyleId AS ObjectTypeId
,[GeomColumn] AS geom
FROM [dbo].[myTable2]
Run Code Online (Sandbox Code Playgroud)
但是出现了错误:
The data type geometry cannot be used as an operand to the UNION, INTERSECT or EXCEPT operators because it is not comparable.
Run Code Online (Sandbox Code Playgroud)
是否存在用几何列合并表的另一种方法?
有两种方法,
1)使用UNION ALL替代UNION,
我们知道它们之间是有区别的,但也许可以满足您的需求。
2)使用CAST功能转换geometry为varbinary(MAX)
接下来:
Create table #myTable1 (ObjectTypeId int identity , GeomColumn geometry)
Create table #myTable2 (ObjectTypeId int identity , GeomColumn geometry)
INSERT INTO #myTable1 (GeomColumn)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));
INSERT INTO #myTable2 (GeomColumn)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));
select 1 AS ObjectTypeId , Cast( GeomColumn as varbinary(MAX)) geom
from #myTable1
union
select ObjectTypeId , Cast( GeomColumn as varbinary(MAX)) geom
from #myTable2
Drop table #myTable1
Drop table #myTable2
Run Code Online (Sandbox Code Playgroud)
结果:(一条记录通过使用显示UNION的是避免dublicated记录)
| 归档时间: |
|
| 查看次数: |
2035 次 |
| 最近记录: |