我想使用另一个数据库表的空间函数更新表列。这就是我提出的......
UPDATE FirstDatabase.dbo.track_logs
SET county = t2.CountyName
FROM OtherDatabase.dbo.tblCounty AS t2
WHERE t2.cty_geog.STIntersects(
GEOGRAPHY::STPointFromText('Point(' + FirstDatabase.dbo.track_logs.lng + ' ' +
FirstDatabase.dbo.track_logs.lat + ')', 26915)
)
但我收到此错误... 在预期条件的上下文中指定的非布尔类型的表达式,接近'。'。
答案 0 :(得分:0)
几乎就在那里。这是TSQL中那些愚蠢的事情之一。您需要= 1
。
这是您问题的答案,但我也很想用POINT(lat, lon, SRID)
来解答您的评论。
UPDATE FirstDatabase.dbo.track_logs
SET county = t2.CountyName
FROM OtherDatabase.dbo.tblCounty AS t2
WHERE t2.cty_geog.STIntersects(geography::Point(FirstDatabase.dbo.track_logs.lat,
FirstDatabase.dbo.track_logs.lng,
26915)) = 1
在像C#这样的语言中,您可以编写如下内容:
bool val = true;
if (val)
// do stuff
但是在TSQL中,你必须写相当于:
bool val = true;
if (val == true)
// do stuff
这并非特定于SQL Spatial,当然,您还必须指定WHERE bitColumnName = 1
,或者如您的示例所示,WHERE bitReturningFunction(args) = 1
。