首页 > 解决方案 > 如何在不删除和重复的情况下向字段添加值?

问题描述

这就是我所拥有的。例如,一个字段包含六个字母:

A, B, C, D, E, F

好的。现在我想更新这个字段并添加字母G。我可以使用这个脚本:

declare
   v_c pls_integer;
   v_s varchar(7) := 'LETTERS';
begin
   select 1 into v_c from some_table where lower(some_column_name) = lower(v_s);
   if (v_c = 1) then
      execute immediate 'update some_table set values = ''A,B,C,D,E,F,G''
         where lower(some_column_name) = lower('''||v_s||''')';
      commit;
   end if;
end;
/

但我需要检查。该字段可能已经包含一些字母。也许这封信已经在这个列表中。例如,字母C。如果该字母已经存在,则不要添加它。如果没有这样的字母,只需将其添加到末尾(以逗号分隔)。我怎样才能做到这一点?

标签: sqloracleplsql

解决方案


另一种选择是INSTR函数,它的性能可能比 LIKE 或 Reg exp 更好。

update test_letters
   set letters = letters || ', G'
 where instr(letters,'G') = 0;

推荐阅读