[英]How to update a column value in one database table using another database table as a reference with SQL
[英]Update table column using table in another SQL Server database while using a spatial function
我想使用帶有另一個數據庫表的空間功能來更新表列。 這就是我想出的...
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)
)
但我收到此錯誤...在需要條件的上下文中,在')'附近指定了非布爾類型的表達式。
快好了。 這是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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.