更新地理数据类型

时间:2019-03-07 21:02:43

标签: sql-server tsql

我有这个查询:

UPDATE f
SET
f.GeographyField = s.GeographyField 
FROM dbo.Table1 f 
INNER JOIN dbo.Table2 s on f.ID=s.ID 
WHERE 
f.ID ='12345' 

我跑步时收到此错误:

  

消息2601,级别14,状态1,第2行无法在其中插入重复的密钥行   具有唯一索引的对象'sys.extended_index_645577338_384000'   'SIndx_SpatialTable_geography_col1'。重复的键值为   (0x7d41bf7704,12345)。

s.GeographyField和f.GeographyField都是地理数据类型。我从未使用过该数据类型。我不知道如何查询以找出重复项。如何解决以上问题?

我在f.GeographyField上找不到唯一索引。此外,我尝试查询此信息以查明是否确实存在重复项,但无法对其进行查询。我认为以不同的方式查询地理类型

select * from Table1 where GeographyField = '0xE7100000010C29904D2D5Y874440F1F44A5986FE5BC0'

1 个答案:

答案 0 :(得分:0)

尝试以下类似方法。 (如果评论无效,则会删除。)

从下面的链接中获得了一些线索。

https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/stastext-geography-data-type?view=sql-server-2017

UPDATE f
SET
f.GeographyField = geography::STGeomFromText(s.GeographyField.STAsText()) 

SET 
f.GeographyField = geography::STGeomFromWKB(s.GeographyField.STAsBinary())