繁体   English   中英

PL-SQL操作列并插入

[英]PL-SQL manipulate column and insert

我将新列添加到现有表中,目的是在进行一些操作(例如添加前缀)之后,使用现有列的数据将数据插入到新列中。 新列和现有列的类型为字符串。 我该如何执行呢? 我不了解plsql。 SQL是否足以应付这种情况?

我这里没有PL / SQL,因此无法测试,但应该很容易。

让我们从更改表开始:

ALTER TABLE table_name
  ADD new_column varchar2(50);

然后,让我们对其进行更新。

我们将从添加old_column中所有不以前缀开头的值开始。

UPDATE table_name t1
SET t1.new_column = 'prefix' || t1.old_column
WHERE t1.old_column NOT LIKE 'prefix%';

然后,我们可以简单地从old_column复制已经具有前缀的值

UPDATE table_name t1
SET t1.new_column = t1.old_column
WHERE t1.old_column LIKE 'prefix%';

只需更新表中的所有记录。

可以一次运行所有记录:

update existing_table
set 
  newcolumn = case 
                when (length(oldcolumn) = 13) and (oldcolumn like '+%')
                  then oldcolumn
                when (length(oldcolumn) = 12) and (oldcolumn like '90%') 
                  then '+' || oldcolumn
                when (length(oldcolumn) = 10) and not (oldcolumn like '+%') 
                  then '+90' || oldcolumn
                else '?'
              end

更新后,可以检查无效转化:

select oldcolumn, newcolumn 
from existing_table
where newcolumn = '?'

并更正case条件或逐一更新剩余记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM