SQL Server - 按几何数据查询

时间:2016-03-21 19:05:17

标签: sql sql-server spatial

假设我在表addresses中有以下数据:

physicalState    physicalPostalCode    geometry
------------------------------------------------------------------------------    
     PA               15340            0xE6100000010CAC1C5A643B1354C02D431CEBE2264440
     OK               74576            0xE6100000010C7DD0B359F50158C079E9263108544140
     WV               26033            0xE6100000010CE8D9ACFA5C2554C0273108AC1CEA4340
     WV               26033            0xE6100000010C36AB3E575B2554C0C3D32B6519EA4340

我想

select * 
from addresses 
where geometry = GEOMETRY::STPointFromText('POINT (40.3038 -80.3005)', 4326)

发现很难解决这个问题......

2 个答案:

答案 0 :(得分:2)

尝试使用方法 [STContains] 像这样的条件:

yourNUmber

答案 1 :(得分:0)

OKIE!想出这个...有一件事值得注意,x / y坐标是翻转的。这有助于挫败事情。愚蠢的我。

无论哪种方式,这都是为了能够按特定点查询数据库:

select * from addresses
WHERE geometry.ToString() = 'POINT (-80.3005 40.3038)'

另外,为了归功于@Adam Silenko,他的解决方案也是如此:

select * 
from addresses
where geometry.STContains(GEOMETRY::STPointFromText('POINT (-80.3005 40.3038)', 4326)) = 1

谢谢!