PL-SQL操纵列和插入

时间:2014-04-04 13:22:44

标签: sql database oracle plsql

我在现有表中添加了新列,我的目的是在一些操作之后使用现有列的数据将数据插入到新列中,例如添加前缀。新列和现有列的类型是字符串。 我怎么能表演呢? 我不知道plsql。 SQL就足够了吗?

2 个答案:

答案 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条件或逐个更新剩余记录。