WÄHLEN Sie so viele Daten von CLOB in VARCHAR2 wie möglich, mit multibyte-Zeichen in die Daten
Multi-byte-Zeichen hatte, verursachte mir große Schmerzen.
Jeder Vorschlag für dieses problem?
Habe ich ein CLOB-Feld, das könnte enthält einige multi-byte-Zeichen, und ich brauche, um zu wählen, in SQL und wandeln Sie dieses Feld in einen string für downstream-Prozesse, derzeit bin ich mit:
SELECT DBMS_LOB.SUBSTR( description, 4000, 1 ) FROM table
Aber die 4000 im obigen Befehl ist in der Länge von Zeichen anstelle bytes. Also ich hatte zu ändern, um 3000 zu behandeln multi-byte-Zeichen, die sich vielleicht eingeschlichen haben in die Daten sonst buffer size Fehler.
Das problem ist für Datensätze, die nicht multibyte-Zeichen enthalten, ist es vielleicht unnötig abgeschnitten, mehr Daten als Sie benötigen.
(Der 4000 ist der string, der Beschränkung, wir können bzw. musste damit Leben.)
Gibt es eine Möglichkeit, etwas zu tun, was im äquivalent von:
SELECT DBMS_LOB.SUBSTR( description, 4000bytes, 1 ) FROM table
So, ich kann so viel Daten wie möglich.
Hinweis: ich bin nicht erlaubt das erstellen temporärer Tabellen/views, die nicht mit PL/SQL nur SQL SELECT...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jeffrey ' s denken ist ok, aber alchn auch Recht. Gerade lief in das gleiche problem und hier meine Lösung. Sie müssen in der Lage sein, um eine Funktion zu erstellen, obwohl:
Hier ist eine demo nutzen:
Vielleicht kürzen Sie die resultierende varchar2 mit SUBSTR: