2013-10-07 24 views
0

我有一個問題,其中一列是一個計算列的表非常「脆弱」,即使是最輕微的變化也會導致它斷裂。我想知道一些的,從計算列物化數據的最常用的方法是(也是因爲計算列不能被索引)實現計算列的數據

作爲參考,計算列是由以下語句生成空間數據:

geometry::STGeomFromText('LINESTRING('+CONVERT(NVARCHAR(20),IPStartNumber)+' 0,'+CONVERT(NVARCHAR(20),IPEndNumber)+' 0)',0) 

回答

1

改變表格,爲計算列修改一個持久列。

Alter TABLE [dbo].[Test] 
(
[ID] [int] NOT NULL, 
[ComputedCloumn] AS (geometry::STGeomFromText('LINESTRING('+CONVERT(NVARCHAR(20),IPStartNumber)+' 0,'+CONVERT(NVARCHAR(20),IPEndNumber)+' 0)',0)) PERSISTED 
) 
GO 
+0

不幸的是,在SQL SERV 2008中,空間列(或任何非字節排序的CLR類型)不能被PERSISTED。 雖然我發現問題是什麼,但我會關閉我的問題。 在表中的某些情況下,沒有真正的IP地址「範圍」。 「範圍」是一個IP地址,因此IP開始和結束是相同的。由於這個原因,幾何實例LINESTRING的計算只能得到一個構造點,從而拋出錯誤。 –

0

在表中的某些情況下,並沒有真正的IP地址「範圍」。 「範圍」是一個IP地址,因此IP開始和結束是相同的。由於這個原因,幾何實例LINESTRING的計算只能得到一個構造點,從而拋出錯誤。