我有一个问题,其中一个表,其中一列是计算列非常“脆弱”,即使是最轻微的更改也会导致它中断。我想知道从计算列实现数据的一些最常用的方法是什么(也因为计算列不能被索引)
作为参考,计算列是由以下语句生成的空间数据:
geometry::STGeomFromText('LINESTRING('+CONVERT(NVARCHAR(20),IPStartNumber)+' 0,'+CONVERT(NVARCHAR(20),IPEndNumber)+' 0)',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
答案 1 :(得分:0)
在表中的某些情况下,IP地址没有真正的“范围”。 “范围”是单个IP地址,因此IP Start和End是相同的。出于这个原因,几何实例LINESTRING的计算只接收一个构造点,从而抛出错误。