新闻资讯
看你所看,想你所想

计算列

计算列由可以使用同一表中的其他列的表达式执际聚多看距计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。

  • 中文名称 计算列
  • 外文名称 Computed Columns
  • 性质 计算机
  • 类别 数据库
  • 应用范围 选择列表等

简介

  【SQL Server】

  例如来自,在 AdventureWorks 示例数据库中,Sales.360百科SalesOrderHeader 表的 TotalDue 列具有以下定义:TotalDue AS Subtotal + TaxAmt + Freight

  除非另行指定,否则计算列是未实际存储在表中的虚拟列。每当在查询中引用计算列时,都将重新罪德加计算它们的值。数据库引擎在 CREATE TABLE 和 ALTER TABLE 语句中使用 PE案汉苗目纪践RSISTED 关键字来将计算列实际存储在表中。如果在计算列的计算更改时涉及任何列,将更新计算列的值。通过将计算列标记为 PERSISTED,可以对具有确定性但不精确的计算列创建索引。另外,如果计算列引用 CLR 函数,则数据库引擎不能验证该函数是否真正具有确定性。在这种情况下,计算列必须为 PERSISTED,以便可对其创建索引。

应用件检官再振练烧外害越紧范围

  计算列可用于选择列表、WHERE 子句、ORDER BY 子句或任何可汽总问使用正则表达式的其他位置,但下列情况除外:

  用作 CHECK、FOREIGN KEY 或 NOT NULL 约束的计算列必须标记为 PERSISTED。如果计算列的值由具有确定性的表达式定义,并且索引列中允许使用计算结果的数据类端绿施局况甲流歌跑宪眼型,则可将该列用作索引中的键列,或者用作 PRIMARY KEY 或 UNIQUE 约束的一部分。

  例如,如果表中含有整数列 ab,则可以对计算列 a + b 创建索引,但不能对计算列 a + DATEPART(dd, GETDATE()) 创建索引,因为在后续调用中,其值可能发生改变。

  计算列不能作为 INSERT 或 UPDATE 语句的目标。

  数据库引擎基于使用的表达式自动确定计算列的为 Null 性。即使只有非空列,大多数表达式的结果也"认为"可为空值,因为下溢或溢出生成的结果也可能为空。使用带 AllowsNull 属性的 COLUMNPROPER规盐武问倍沙火了换行TY 函数可查明表中任何计算列的为 Null 性。通过指定 ISNULL (check_expression, constant) 可以将可为空值的表达式转换为不可为空值的表达式,其中, constant 是可替换所有空结果的非空值.

 免创烧吗回流 例子:

  CREATE TABLE dbo.Products

  (

  ProductID int IDENTITY (1,1) NOT 根界晶剧历给至陆要NULL

  , QtyAvailable smallint

  , UnitPrice money

  , InventoryValue AS QtyAvailable * UnitPrice

  );

  -- Insert values into the table.

  INSERT INTO dbo.Products (QtyAvailable, UnitPrice)

  VAL修路国某汉内室益演UES (25, 2.00), 答牛得微字犯受笔(10, 1.5);

  -- Display the rows in the table.

  SELECT Product班着航府超满督罗年乱规ID, QtyAvailable, UnitPrice, InventoryValue

  FROM dbo.Products;

  ALTER TABLE dbo.Products DROP COLUMN RetailValue;

  GO

  ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvai措修重附lable * Un溶院告来起她统曲重际蛋itPrice * 1.5);

转载请注明出处安可林文章网 » 计算列

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com