2010-12-23 2 views
1

Ich habe eine Spalte Oracle-Datenbank, sagen col1, dass die folgenden Werte hat:So prüfen Sie Daten in einer Spalte durch einen Doppelpunkt (:) getrennt

Col1 (A: B: C)

I Jetzt müssen Sie mitkommen und zu diesem Col1, nur wenn es nicht existiert, zusätzliche Werte hinzufügen, aber nicht sicher, wie man überprüfen soll, ob Col1 diese Werte bereits enthält.

Szenario könnte wie folgt aussehen:

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 

Verwenden von Oracle SQL oder PL/SQL Ich bin nicht sicher, wie etwa die Verarbeitung der oben zu gehen, um sicherzustellen, ob Elemente vorhanden sind oder nicht existieren und ob oder nicht hinzufügen zu Col1 hinzufügen

In der Hoffnung, jemand kann mit einem Mittel zur Überprüfung der Daten auf der Grundlage der oben genannten unterstützen.

Dank

+0

Answering fördert nur das Verhalten –

+0

@OMG Ponies: Verhalten

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

Um einen Wert zu entfernen? Es ist nicht unüblich, dass eine Spalte eine begrenzte Liste von Werten enthält - sie ist nicht gut denormalisiert, aber sie macht Shuttle-Objekte in Apex zum Beispiel einfach ... –

+0

@ Jeffrey Kemp: Ich meine es im Scherz. –

Antwort

3

Dies könnten Sie den Einstieg:

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

Danke @ Jeffrey Kemp. Ich benutze B/C von ApEx Shuttle. Basierend auf Ihrer Antwort Jeffrey, muss ich auch in der Lage sein, einen vorhandenen Wert aus der Liste über pl/sql zu entfernen, aber muss sicherstellen, dass ich die erforderlichen Doppelpunkte ersetze/entferne, wenn ich dies tue. Wie kann ich überprüfen, ob das Instrument genau mit dem Instrument übereinstimmt, damit ich weiß, ob der Wert, den ich aus der Liste entferne, wie ": A:" oder ": A" oder "A:" sein könnte? – tonyf

+0

bearbeitet, um ein Beispiel zum Entfernen eines Werts hinzuzufügen. –