SQL Server:添加一个带有计算字段的列

3

我想修改一个表格,添加一个额外的列,该列包含org_id的最后3位数字。我这样做是因为我使用的软件无法读取34000000000000000002,因为它太大了。我想把34000000000000000002变成002并放入新列中。我认为以下代码可以实现:

alter table [org] add new_org_id integer value (select right(org_id,3));

我对SQL非常陌生,如果我做得不好请见谅。

enter image description here

2个回答

4
你接近正确了。请查看文档以获得正确的语法。
alter table [org] add new_org_id as right(org_id,3);

此外,您可能希望将此列定义为持久化计算列。
PERSISTED指定数据库引擎在表中物理存储计算值,并在计算列依赖的任何其他列更新时更新这些值。将计算列标记为PERSISTED允许创建一个索引,该索引是确定性的但不精确的。有关更多信息,请参见计算列上的索引。任何用作分区表的分区列的计算列必须显式标记为PERSISTED。当指定PERSISTED时,computed_column_expression必须是确定性的。

1
相当接近,我认为。
我会这样做。
alter table [org] add new_org_id integer

UPDATE [org]
SET new_org_id = right(org_id,3);

2
这不是一个计算列,每次插入新数据时都必须更新该列。 - S3S
像@scsimon建议的那样,找出将数据推送到您的表中的存储过程或SSIS包。然后,在您的合并或插入语句中添加新列和所需逻辑。这将处理新的数据; 但是您仍然需要更新历史数据。(有两件事情要做;如果考虑将列添加到表中,则有三件事情要做)。 - junketsu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接