Sql-Server
可以使用 SQL Server 2008 中的視圖返回地理數據類型 Lat/Long 屬性嗎?
希望這個問題是不言自明的。
我一直在尋找關於 sql server 2008 中的視圖和地理數據類型的似乎很少/很差的微軟文件,我認為答案是“不,地理數據類型要麼不受支持,要麼在看法”; 但我不完全確定,我希望得到一些佐證。
我一直在嘗試將地理數據添加到現有視圖中。我的最終目標是從相關欄位中檢索經度/緯度數據。
這是在應用於表時有效但在視圖中定義時無效的選擇語句(簡化):
SELECT [dbo.vendor.location].Lat AS latitude, FROM dbo.vendor
請注意,這
[dbo.vendor.location]
是欄位,並且Lat
是geography
數據類型的緯度屬性。當該 sql 在視圖中執行時,將返回以下錯誤:
The multi-part identifier "dbo.vendor.location.Lat" could not be bound
編輯:
請注意,我還嘗試了以下查詢,結果相似:
SELECT [dbo].[vendor].[location].Lat AS latitude, FROM dbo.vendor
在這種情況下,SQL Management Studio 會刪除引號並返回相同的“multi-part … could not be bound”錯誤。
不要
[dbo].[vendor].[location].Lat
在SELECT
列表中引用它。簡單地使用
vendor.location.Lat
或location.Lat
或定義表別名並使用它。CREATE TABLE dbo.Vendor([location] geography) GO /*Works fine*/ CREATE VIEW V1 AS SELECT v.location.Lat AS latitude FROM dbo.vendor v GO /*Fails*/ CREATE VIEW V2 AS SELECT dbo.vendor.location.Lat AS latitude FROM dbo.vendor
單獨使用列
dbo.vendor.location
(沒有 CLR 屬性呼叫)實際上在列列表中仍然有效,但無論如何使用“多於兩部分的列名”在已棄用的 TSQL 功能列表中。