如何检查以冒号(:)分隔的列中的数据?

时间:2010-12-23 03:45:55

标签: sql plsql oracle10g

我有一个Oracle数据库列,比如col1,它具有以下值:

Col1(A:B:C)

我现在需要加入并添加到此Col1,只有当它不存在时,还有其他值,但不确定如何检查Col1是否已包含这些值。

情景可能如下:

1) Need to add B   => Outcome=> check Col1 – B exists, do not add.
2) Need to add A:C => Outcome=> check Col1 – A and C exists, do not add.
3) Need to add C:D => Outcome=> check Col1 – C exists but D doesn’t, do not add C but need to add D
4) Need to add G  => Outcome=> check Col1 – G doesn’t, need to add G

使用Oracle SQL或PL / SQL我不确定如何处理上述内容以确保项目是否存在以及是否要添加到Col1

1 个答案:

答案 0 :(得分:3)

这可能会让你开始:

UPDATE mytable
SET Col1 = Col1 || ':A'
WHERE INSTR(':' || Col1 || ':', ':A:') = 0;

删除值:

UPDATE mytable
SET Col1 = TRIM(':' FROM REPLACE(Col1, ':A:', ':'))
WHERE INSTR(':' || Col1 || ':', ':A:') > 0;