添加一个新列,并用Oracle SQL中另一列的一部分填充它

时间:2018-07-10 12:09:34

标签: sql oracle

我想在我的表中添加一个新列,并用另一列中的最后3个字符填充它们,两个都是varchar,源列应保持不变。 我想避免创建临时列,而是想学习如何在单个查询中进行操作。谢谢。

2 个答案:

答案 0 :(得分:5)

最好使用virtual columns

create table t2( col_name varchar2(10) );

insert into t2(col_name) values('hsaJDadkD');

ALTER TABLE t2 ADD (col_name2 GENERATED ALWAYS AS (SUBSTR(col_name,-3))); --virtual column

Select * from T2;

COL_NAME   COL_NAME
---------- --------
hsaJDadkD  dkD     

答案 1 :(得分:1)

我建议使用@Kushik Nayak的虚拟列解决方案。

如果使用实列来求解,则数据将不会保持同步。 (也就是说,如果有人更改了旧列或插入了新数据,则您的新列将不正确。)

真正的列不能一步完成,结构更改(DDL)和数据更改(DML)是两个步骤:

ALTER TABLE t ADD col2 VARCHAR2(3);
UPDATE t SET col2 = substr(col1,-3);