ersetzt Zeichen in einer CLOB-Spalte (db2)

9

Ich habe ein CLOB(2000000) -Feld in einer db2 (v10) -Datenbank, und ich möchte eine einfache UPDATE -Abfrage darauf ausführen, um jedes Vorkommen von "foo" zu "baaz" zu ersetzen.

Da der Inhalt des Feldes mehr als 32k ist, erhalte ich den folgenden Fehler:

%Vor%

Wie kann ich die Werte ersetzen?

UPDATE : Die Abfrage war die folgende (UPDATE in SELECT für einfacheres Testen geändert):

%Vor%

UPDATE 2 Wie der mustaccio gezeigt hat, funktioniert REPLACE nicht in CLOB -Feldern (oder zumindest nicht, ohne eine Umwandlung in VARCHAR für die eingegebenen Daten durchzuführen - was in meinem Fall nicht möglich ist, da die Datengröße mehr als 32k) - es geht darum, eine alternative Möglichkeit zu finden, die REPLACE -Funktionalität für CLOB -Felder zu übernehmen.

Danke, Krisy

    
krisy 21.07.2015, 12:04
quelle

2 Antworten

1

Schließlich, da ich durch eine SQL-Abfrage keinen Weg dazu gefunden habe, habe ich die Tabelle exportiert, ihren Lob-Inhalt in Notepad ++ bearbeitet und die Tabelle wieder importiert.

    
krisy 06.08.2015 13:01
quelle
0

Nicht sicher, ob dies für Ihren Fall zutrifft: Es gibt zwei verschiedene REPLACE-Funktionen, die von DB2 angeboten werden: SYSIBM.REPLACE und SYSFU.REPLACE . Die Version von REPLACE in SYSFUN akzeptiert CLOBs und unterstützt Werte bis zu 1 MByte. Falls Ihre Werte länger sind, als Sie Ihre eigene (SQL-basierte?) Funktion schreiben müssten.

Übrigens: Sie können die Funktionsauflösung überprüfen, indem Sie "Werte (aktueller Pfad)"

ausführen     
data_henrik 29.07.2015 12:00
quelle

Tags und Links