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
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