Sql 如何基于地理空间数据类型获取long和lat?

Sql 如何基于地理空间数据类型获取long和lat?,sql,sql-server,tsql,geometry,geospatial,Sql,Sql Server,Tsql,Geometry,Geospatial,我遇到的问题是,我试图根据一个位置字段获取long和lat值,我有geography列,但我总是得到一个错误,如下所示: 味精403,16级,状态1,第9行 数据类型的运算符无效。运算符等于,类型等于地理位置 这是一个基本的查询: select Loc.Lat, Loc.Long from VideoGamesLocation where Loc= '0xE6100000010CBFF1B56796AE4A4029A78951EA6519C0' 你们知道如何根据上面的查询得到lat和lon

我遇到的问题是,我试图根据一个位置字段获取long和lat值,我有geography列,但我总是得到一个错误,如下所示:

味精403,16级,状态1,第9行
数据类型的运算符无效。运算符等于,类型等于地理位置

这是一个基本的查询:

select Loc.Lat, Loc.Long  from VideoGamesLocation
where  Loc= '0xE6100000010CBFF1B56796AE4A4029A78951EA6519C0'

你们知道如何根据上面的查询得到lat和long的值吗?

好的。然后转换到
geography
,并使用或其中一个函数进行比较。乙二醇

drop table if exists VideoGamesLocation
create table VideoGamesLocation(id int, Loc geography)

DECLARE @g geography;   
SET @g = cast(0xE6100000010CBFF1B56796AE4A4029A78951EA6519C0 as geography)
insert into VideoGamesLocation(id, Loc) values (1,@g)


select Loc.Lat, Loc.Long  from VideoGamesLocation
where  1=Loc.STEquals(cast(0xE6100000010CBFF1B56796AE4A4029A78951EA6519C0 as geography))

嗯。然后转换到
geography
,并使用或其中一个函数进行比较。乙二醇

drop table if exists VideoGamesLocation
create table VideoGamesLocation(id int, Loc geography)

DECLARE @g geography;   
SET @g = cast(0xE6100000010CBFF1B56796AE4A4029A78951EA6519C0 as geography)
insert into VideoGamesLocation(id, Loc) values (1,@g)


select Loc.Lat, Loc.Long  from VideoGamesLocation
where  1=Loc.STEquals(cast(0xE6100000010CBFF1B56796AE4A4029A78951EA6519C0 as geography))

使用.STEquals运算符而不是=。 如果相等,此函数将返回1

还可以使用cast函数将“0xE61000..”转换为地理数据类型

因此,sql查询应该是: 从视频游戏位置选择Loc.Lat和Loc.Long
其中1=位置STEquals(强制转换(0xE6100000010CBF1B56796AE4A4029A78951EA6519C0作为地理位置))

使用.STEquals运算符而不是=。 如果相等,此函数将返回1

还可以使用cast函数将“0xE61000..”转换为地理数据类型

因此,sql查询应该是: 从视频游戏位置选择Loc.Lat和Loc.Long
其中1=Loc.STEquals(强制转换(0xE6100000010CBF1B56796AE4A4029A78951EA6519C0作为地理位置))

看起来不像GUID,也不像二进制字符串。该字符串来自何处?这是地理空间数据类型David,是Loc字段。字符串“0xE610000001CFDSFDS45E4A4029A78951A6519C0”与地理实例的关系如何?这不是WKT或WKB。它甚至不是一个十六进制字符串,因为它在中间有<代码> SFDs/COD>中间。有一个键值,它是存储在一个GRIGRATION数据类型字段中的值。所以基本上,这部分工作:选择LOC,Lat,LOC。从VIEGOGAMESeLoT长,但是当我试图过滤Loc时,我得到上面的错误。它看起来不像一个二进制字符串。该字符串来自何处?这是地理空间数据类型David,是Loc字段。字符串“0xE610000001CFDSFDS45E4A4029A78951A6519C0”与地理实例的关系如何?这不是WKT或WKB。它甚至不是一个十六进制字符串,因为它在中间有<代码> sfd。有一个键值,它是存储在一个格式化数据类型字段中的值。所以基本上,这部分工作:选择LOC,Lat,LOC。从VIEGOGAMESeLoT长,但是当我试图过滤Loc时,我得到上面的错误。