如何创建根据另一列计算的列?

2024-01-08

我需要创建一个专栏age在 SQL Server 数据库中。

该列的值应根据该列的值计算DOB.

它的值也应该增加Age增加。


您应该使用计算列来解决此问题。其定义与此类似:

ALTER TABLE Customers ADD Age AS datediff(year, DOB ,getdate())

原始声明摘自,更多信息可在黑黄蜂 http://www.blackwasp.co.uk/SQLComputedColumns.aspx.

Edit:

MSDN 将计算列解释为:

计算列是根据可以使用其他表达式的表达式计算得出的 同一个表中的列。表达式可以是非计算列 名称、常量、函数以及它们的任意组合 一名或多名操作员。该表达式不能是子查询。

除非另有说明,计算列是虚拟列, 没有物理存储在表中。它们的值被重新计算 每次在查询中引用它们时。数据库引擎使用 CREATE TABLE 和 ALTER TABLE 语句中的 PERSISTED 关键字 将计算列物理存储在表中。他们的价值观是 当计算中的任何列发生变化时更新。经过 将计算列标记为 PERSISTED,您可以在 确定性但不精确的计算列。此外, 如果计算列引用 CLR 函数,数据库引擎 无法验证该函数是否真正具有确定性。在这个 在这种情况下,计算列必须是 PERSISTED,以便索引可以 在其上创建。有关详细信息,请参阅在计算上创建索引 列。

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

必须标记用作 CHECK、FOREIGN KEY 或 NOT NULL 约束的计算列 坚持。计算列可以用作索引中的键列或任何索引的一部分 PRIMARY KEY 或 UNIQUE 约束(如果计算列值由 索引中允许确定性表达式和结果的数据类型 列。

例如,如果表具有整数列 a 和 b,则计算列 a + b 可以是 已建立索引,但计算列 a + DATEPART(dd, GETDATE()) 无法建立索引,因为 > 在后续调用中值可能会发生变化。

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

数据库引擎自动确定可为空性 基于所使用的表达式的计算列。大多数的结果 即使只有不可为空的列,表达式也被视为可为空 存在,因为可能的下溢或溢出会产生 结果也为空。将 COLUMNPROPERTY 函数与 AllowsNull 属性可调查任何计算的可为空性 表中的列。可为空的表达式可以转换为 通过指定 ISNULL(check_expression,constant) 来不可为空, 其中常量是替换任何空结果的非空值。

Source: MSDN - 计算列 http://msdn.microsoft.com/en-us/library/ms191250%28v=sql.105%29.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建根据另一列计算的列? 的相关文章

随机推荐

  • PHP/GD:更好的高斯模糊

    我想用 GD 库模糊图像 不幸的是 GD 提供的 GAUSSIAN BLUR 效果还不够 我想要更多blurrish
  • ComBox 更改后用时间计算填充列表框

    我这里有一个简单的用户表单 它根据组合框的更改填充列表框 组合框中唯一列表的代码 Private Sub UserForm Initialize used this code to get a dynamic combobox unique
  • 在 gnu Makefile 中组合多个 ifeq 和 ifneq

    如果语法如下 如何添加多个选择 ifeq VAR1 some string 结合 ifneq VAR2 some other string 结合更多 有单线吗 像 幻想代码 ifeq VAR1 some string and not VAR
  • Sphinx 文档模块属性

    我有一个模块应该有 property 我通过设置一个类作为模块解决了这个问题 我从这个答案中得到了这个想法 惰性模块变量 可以做到吗 https stackoverflow com questions 1462986 lazy module
  • SQL Server 2012 中的 128 位 Int?

    我正在寻找在 SQL Server 中实现 128 位无符号整数的最佳方法 主要要求是它must支持所有 128 位的按位运算 理论上这在 64 位机器上可能吗 我离题了 我已经阅读了一些通过 CLR 程序集使用 C 和用户定义类型的实现
  • SQL INNER JOIN 与带有 WHERE 的 LEFT JOIN

    我试图更直观地掌握 SQL 连接 例如 学习如何将 RIGHT JOIN 重写为 LEFT JOIN 通过翻转表的顺序 帮助我更好地理解这两个连接的工作方式 然而 现在我想知道是否可以将 INNER JOIN 重写为带有 WHERE 条件的
  • 如何在 Django 中按类别过滤产品?

    我正在尝试根据类别进行过滤 但它在每个类别页面上显示所有产品 但我想根据类别页面进行过滤 请检查我的代码并让我知道如何做到这一点 这是我的models py file class SubCategory models Model subca
  • 使用 CSS 将图像在屏幕上居中 - 随机屏幕/图像尺寸

    我必须创建一个网页 出于此问题的目的 该网页是在屏幕中心垂直和水平居中的单个图像 它有以下要求 客户端屏幕尺寸未知 移动端 该图像是用户定义的 因此尺寸未知 图像必须在所有设备上完全垂直和水平居中 图像居中必须在屏幕旋转过程中保持不变 即从
  • 在 Emberjs / Ember-cli 中禁用/关闭 LiveReload 服务器

    我使用 Cloud9 IDE 它仅公开端口 80 并阻止 LiveReload 连接 我收到此错误 GET https myapp c9 io 35729 livereload js snipver 1 https myapp c9 io
  • 从时间戳中提取时间

    我正在尝试从 ISO8601 时间戳中提取时间部分 例如从以下时间戳开始 0001 01 01T17 45 33 我想提取这部分 17 45 33 你有几个选择 假设您将它放在一个名为的变量字符数组中string 现在 如果您知道时间始终位
  • Rails 缓存的默认过期时间是多少?

    我已经做了一些谷歌搜索 但找不到这个问题的答案 Rails 允许为其缓存指定过期时间 如下所示 Rails cache fetch my var expires in gt 10 seconds 但是如果我什么都不指定会发生什么 Rails
  • 处理对话框流中的音频播放完成回调(媒体响应)

    我正在通过播放来处理意图MediaObject 我想创建一个意图处理程序来捕获媒体播放完成的回调 文档 https developers google com actions assistant responses media respon
  • 正则表达式部分隐藏电子邮件? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我想要实现
  • 本地化 JFileChooser“所有文件”字符串

    我正在使用 JFileChooser 开发一个 java 应用程序 用户可以切换语言 Locale setDefault Locale ENGLISH JFileChooser chooser new JFileChooser choose
  • 动态更改 ASP.Net 中的用户控件

    我正在尝试创建一个网页 该网页将根据下拉列表的选定值显示适当的用户控件 基本上页面布局是这样的 下拉选择 lt 基于下拉选择创建的用户控件 gt 我已经一半工作了 当选择改变时 控件也会改变 在 OnInit 中 我动态创建最后选定的控件
  • 过滤 Pandas 数据帧而不删除行

    我正在尝试使用where在我的 Pandas DataFrame 上替换所有不符合我的标准的单元格NaN 但是 我希望以始终保留原始 DataFrame 的形状的方式进行操作 并且不会从生成的 DataFrame 中删除任何行 给定以下数据
  • 如何将qml文件重新加载到QQuickView

    将 qml 文件重新加载到 QQuickView 的正确方法是什么 我正在使用 Qt Quick 2 1 并尝试编写一个简单的程序来加载 qml 文件并显示它 目前 我正在通过创建 QQuickView 来完成此操作 当我想重新加载 qml
  • 读一剪!在序言中

    我正在阅读同时阅读 Bratko 的 人工智能 Prolog 编程 第 5 章 控制回溯 起初 剪切似乎是模仿其他编程语言中已知的 if else 子句的直接方法 例如 Find the largest number max X Y Y X
  • android:如何在我的应用程序中实现像 Go Launcher 这样的首次教程?

    Go Launcher 有一个很好的初次使用教程 它与 Stock ICS 首次运行非常相似 我想学习如何在第一次启动我的应用程序时显示类似的教程 如何在我的 Android 应用程序中实现这个透明视图 与屏幕对象交互 我试图做相似的东西
  • 如何创建根据另一列计算的列?

    我需要创建一个专栏age在 SQL Server 数据库中 该列的值应根据该列的值计算DOB 它的值也应该增加Age增加 您应该使用计算列来解决此问题 其定义与此类似 ALTER TABLE Customers ADD Age AS dat