我在现有表中添加了新列,我的目的是在一些操作之后使用现有列的数据将数据插入到新列中,例如添加前缀。新列和现有列的类型是字符串。 我怎么能表演呢? 我不知道plsql。 SQL就足够了吗?
答案 0 :(得分:3)
我这里没有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%';
答案 1 :(得分:1)
只需更新表格中的所有记录。
可以单次运行所有记录:
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
条件或逐个更新剩余记录。