Как преобразовать Clob в Varchar2 в Oracle

Преобразование данных в строковом формате между разными типами данных в Oracle обычно является простым процессом, но в некоторых случаях это немного сложнее, чем в других. Одна из них возникает, когда вы используете Oracle для преобразования clob в varchar2, что сложно, потому что Столбец varchar2 может содержать не более 4000 символов, в то время как clob может хранить огромное количество символов. данные. Однако вы все равно можете достичь своей цели, используя метод dbms_lob substr или to_char и указав максимальный размер.

Объяснение CLOB и VARCHAR2

CLOB (или в просторечии «clob») является аббревиатурой от «большого объекта символа» и может хранить до 4 ГБ данных. Он используется несколькими системами баз данных, включая DB2 и Oracle. CLOB полезен, когда вам нужно хранить большие объемы данных, но сам размер может вызывать проблемы в некоторых ситуациях. Вот почему преобразование из Oracle CLOB в строковый формат более управляемого размера часто является хорошим подходом перед выполнением операций.

Видео дня

Формат VARCHAR2 хранит меньшие объемы данных, обычно до 4000 байтов, если вы не используете расширенный максимальный размер строки, и в этом случае он может достигать 32 767 байтов. Для однобайтового набора символов вы обычно можете получить до 4000 символов в столбце. Несоответствие между максимальными размерами этих двух форматов данных является причиной возникновения проблем во время преобразования.

Метод dbms_lob substr

Чтобы преобразовать строку clob в varchar2, откройте программу SQL * Plus. Синтаксис преобразования, который вам необходимо выполнить:

ВЫБЕРИТЕ dbms_lob.substr (clob_column, for_how_many_bytes, from_which_byte) ИЗ таблицы

Здесь значения в скобках - это те, которые вам нужно изменить, а также «таблица» в конце. Они соответствуют столбцу ("clob_column") и таблице, с которой вы работаете. «For_how_many_bytes» дает вам возможность указать, сколько байтов данных вы хотите преобразовать, а «from_which_byte» позволяет указать начальную точку.

Итак, если у вас есть таблица под названием «налоги» и поле под названием «net_pay», и предполагая, что вы хотите 4000 байт, начиная с первого, вы должны ввести:

ВЫБЕРИТЕ dbms_lob.substr (net_pay, 4000, 1) ИЗ налогов

Чтобы преобразовать строку в формат varchar2.

Метод TO_CHAR

Вы также можете использовать команду TO_CHAR с очень похожим синтаксисом для достижения той же цели:

ВЫБРАТЬ TO_CHAR (SUBSTR (clob_column, 0,3999)) ИЗ таблицы

Здесь начальный и конечный байты указаны как 0 и 3999 (для строки из 4000 символов, начинающейся с самого начала), но поля clob_column и table используются точно так же, как до. Итак, в том же примере вы можете ввести:

ВЫБЕРИТЕ TO_CHAR (SUBSTR (net_pay, 0,3999)) ИЗ налогов

По сути, вместо того, чтобы завершить процесс за один шаг, здесь используется команда SUBSTR для извлечения подстроки из большей строки, а затем используется «to_char» для обработки преобразования. Если в рассматриваемом столбце clob меньше 4000 байтов информации, вы можете ввести имя столбца в скобках после to_char вместо указания подстроки.