sql - 如何在不删除和重复的情况下向字段添加值?
问题描述
这就是我所拥有的。例如,一个字段包含六个字母:
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
。如果该字母已经存在,则不要添加它。如果没有这样的字母,只需将其添加到末尾(以逗号分隔)。我怎样才能做到这一点?
解决方案
另一种选择是INSTR函数,它的性能可能比 LIKE 或 Reg exp 更好。
update test_letters
set letters = letters || ', G'
where instr(letters,'G') = 0;
推荐阅读
- html - 如何在引导程序中实现表单样式?
- r - 寻找将宽数据转换为长数据的更有效解决方案
- python - 减少在 Pandas (Python) 中填充空数据框单元格的时间
- r - 如何从列表中的所有嵌套列表中修改同一列中的选择行?
- javascript - 如何使用带有链接按钮的 checkValidity?
- sql - SQL Server 查询:Where 条件下的性能问题
- php - Twig 过滤器中的 preg_replace 不接受字符串作为 RegEx
- avro - 具有空对象的记录类型的 Avro 模式
- java - 在 HashMap 值中存储两个值
- ios - 我如何在键盘出现之前获得键盘框架