如何测试SQL Server Geography列值是否为POINT(0 0)?

时间:2015-04-15 06:09:50

标签: sql sql-server sql-server-2012 geography

以下代码有效,但速度很慢:

select top 100 FooId
from dbo.Foos
where latitudelongitude.ToString() = 'POINT(0,0)'
order by FooId desc

有没有更好的方法来确定GEOGRAPHY值是否具有0,0的纬度/经度?

2 个答案:

答案 0 :(得分:3)

您可以使用.Lat.Long来实现这一目标。像这样的东西

SELECT TOP 100 FooId
FROM dbo.Foos
WHERE latitudelongitude.Lat = 0 AND latitudelongitude.Long = 0
ORDER BY FooId desc

答案 1 :(得分:3)

翻转你的测试,哟。 ;)

declare @g geography = geography::STPointFromText('POINT(0 0)', 4326);

select * 
from dbo.Foos 
where latitudelongitude.STEquals(@g) = 1

换句话说,您最初编写的查询不是SARGable。我写的是。