实现计算列的数据

时间:2013-10-07 15:08:45

标签: sql tsql sql-server-2008-r2 spatial

我有一个问题,其中一个表,其中一列是计算列非常“脆弱”,即使是最轻微的更改也会导致它中断。我想知道从计算列实现数据的一些最常用的方法是什么(也因为计算列不能被索引)

作为参考,计算列是由以下语句生成的空间数据:

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

2 个答案:

答案 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 

答案 1 :(得分:0)

在表中的某些情况下,IP地址没有真正的“范围”。 “范围”是单个IP​​地址,因此IP Start和End是相同的。出于这个原因,几何实例LINESTRING的计算只接收一个构造点,从而抛出错误。