【发布时间】:2015-05-20 09:46:08
【问题描述】:
我尝试计算两个物体之间的距离。
declare @p1 geography
declare @p2 geography
SELECT @p1 = WKT from tbl_1 where loc = "school"
SELECT @p2 = WKT from tbl_2 where loc = "school"
select round(@p1.STDistance(@p2)/1000,0) Distance_KM
但我收到了loc 列的错误
列名无效
此列存在且数据类型为geography。
WKT 列填充使用:
UPDATE [dbo].[lbl_1]
SET [WKT] = geography::STPointFromText('POINT(' + CAST([Longitude] AS VARCHAR(20)) + ' ' + CAST([Latitude] AS VARCHAR(20)) + ')', 4326)
GO
怎么了??
【问题讨论】:
-
你的意思是
loc的地理类型列而不是VARCHAR -
你的表
tbl_1和tbl_2都有一个列loc? -
"school"是字符串文字还是列? sql server 将其视为一列,这就是我认为您遇到错误的原因。试试这个declare @p1 geography select 1 WHERE @p1 = "school" -
知道了。字符串文字“学校”在单引号之间而不是双引号之间:-((
-
您尝试做的事情根本不正确。
'school'一个字符串怎么能等于一个GEOGRAPHY类型列loc??
标签: sql-server geography sqlgeography geographic-distance