Sql-Server

可以使用 SQL Server 2008 中的視圖返回地理數據類型 Lat/Long 屬性嗎?

  • January 14, 2014

希望這個問題是不言自明的。

我一直在尋找關於 sql server 2008 中的視圖和地理數據類型的似乎很少/很差的微軟文件,我認為答案是“不,地理數據類型要麼不受支持,要麼在看法”; 但我不完全確定,我希望得到一些佐證。

我一直在嘗試將地理數據添加到現有視圖中。我的最終目標是從相關欄位中檢索經度/緯度數據。

這是在應用於表時有效但在視圖中定義時無效的選擇語句(簡化):

SELECT     
   [dbo.vendor.location].Lat AS latitude,
FROM         
   dbo.vendor

請注意,這[dbo.vendor.location]是欄位,並且Latgeography數據類型的緯度屬性。

當該 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].LatSELECT列表中引用它。

簡單地使用vendor.location.Latlocation.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 功能列表中。

引用自:https://dba.stackexchange.com/questions/55571