[英]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.