SQL Server:添加具有计算字段的列

SQL Server:添加具有计算字段的列,sql,sql-server,ddl,calculated-columns,Sql,Sql Server,Ddl,Calculated Columns,我试图修改一个表,添加一个附加列,该列的最后3位为org\u id。我这样做是因为我使用的软件由于大小原因无法读取340000000000000000002。我想将340000000000002转换为002,并将其放在新列中。我想下面的方法会管用的 alter table [org] add new_org_id integer value (select right(org_id,3)); 我对sql非常陌生,所以如果我还不熟悉,我很抱歉 我想很接近 我愿意 alter table [org

我试图修改一个表,添加一个附加列,该列的最后3位为
org\u id
。我这样做是因为我使用的软件由于大小原因无法读取
340000000000000000002
。我想将
340000000000002
转换为
002
,并将其放在新列中。我想下面的方法会管用的

alter table [org] add new_org_id integer value (select right(org_id,3));
我对sql非常陌生,所以如果我还不熟悉,我很抱歉

我想很接近

我愿意

alter table [org] add new_org_id integer

UPDATE [org]
SET new_org_id = right(org_id,3);
你很接近。有关正确的语法,请参阅

alter table [org] add new_org_id as right(org_id,3);
此外,您可能希望将其设置为计算列

持久化指定数据库引擎将物理存储 表中的计算值,并在任何其他 更新计算列所依赖的列。标记 持久化的计算列允许在 确定但不精确的计算列。更多 有关详细信息,请参见计算列上的索引。任何计算列 用作分区表的分区列必须显式 标记的持续存在。计算列表达式必须是确定性的 指定了持久化的时间


但这不是计算列,每次插入新数据时都必须更新该列。如@scsimon所建议。找出存储的进程;或正在将数据推送到表中的SSIS包。然后,添加新列,并在merge或insert语句中添加具有所需逻辑的新列。这将处理新的er数据;但您仍然需要对历史数据进行更新。(2个必须做的事情;如果你考虑将列添加到表中,则3)。