Как преобразовать Clob в Varchar2 в Oracle
Преобразование данных в строковом формате между различными типами данных обычно является простым процессом в Oracle, но некоторые случаи немного сложнее, чем другие. Один из них возникает, когда вы используете Oracle для преобразования clob в varchar2, что сложно, поскольку столбец varchar2 имеет максимум 4000 символов, в то время как clob может хранить огромное количество символьных данных. Однако вы все равно можете достичь своей цели, используя метод substr dbms_lob или 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_what_byte ) ИЗ таблицы
Здесь значения в скобках — это те, которые вы должны изменить, а также «таблица» в конце. Они соответствуют столбцу ("clob_column") и таблице, с которой вы работаете. «for_how_many_bytes» дает вам возможность указать, сколько байтов данных вы хотите преобразовать, а «from_what_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 вместо указания подстроки.