簡體   English   中英

使用空間功能時,使用另一個SQL Server數據庫中的表更新表列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM