我有一个sql server 2008引擎。在我的数据库中,我有两个表。表A具有PK1列,以及用于POINT值的地理数据类型。表B具有PK2列,其具有用于POLYGON值的几何数据类型。我需要输出一个带有PK1和PK2列的表C.要填充此表,我需要设置Geographic POINT的选择连接在GEOMETRIC POLYGON中。
我试过这个问题:
SELECT p.PropertyID
,p.ParcelID
,t.GEOID
FROM [bhdev].[dbo].[REF_TRACTS] t
join bhdev.dbo.PropertyParameters p on p.Geolocation.STIntersects(t.geom)=1
这会导致以下错误: 操作数类型冲突:sys.geometry与sys.geography不兼容
如何让联接工作? 感谢
答案 0 :(得分:2)
线索在错误文本中:
操作数类型冲突: sys.geometry 与sys.geography不兼容
(强调我的)我的猜测是[bhdev]。[dbo]。[REF_TRACTS] .geom是几何类型的列而不是它应该的地理位置。您将不得不使用以下内容进行转换:
geography::Point([bhdev].[dbo].[REF_TRACTS].geom.X,
[bhdev].[dbo].[REF_TRACTS].geom.Y,
3426
)
(或切换X& Y,取决于您存储纬度的那个)我的建议是通过在表格中添加新列来转换所有行,进行上述转换,调整所有代码引用geom列以引用新列,最后将旧列重命名为其他内容。一旦没有重命名后中断的代码,请完全删除该列。