Як перетворити з Clob на Varchar2 в Oracle

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

CLOB і VARCHAR2 Пояснення

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

Відео дня

Формат VARCHAR2 зберігає менші обсяги даних, зазвичай до 4000 байт, якщо ви не використовуєте розширений максимальний розмір рядка, у цьому випадку він може досягати 32767 байт. Для однобайтового набору символів зазвичай можна отримати до 4000 символів у стовпці. Під час перетворення виникають проблеми через розбіжність між максимальними розмірами цих двох форматів даних.

Метод dbms_lob substr

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

SELECT 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 з дуже схожим синтаксисом для досягнення тієї ж мети:

SELECT TO_CHAR(SUBSTR (clob_column, 0,3999)) ІЗ таблиці

Тут початковий і кінцевий байти вказуються як 0 і 3999 (для рядка з 4000 символів, що починається від початку), але поля "clob_column" і "table" використовуються точно так само, як раніше. Отже, у тому ж прикладі ви можете ввести:

SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) З податків

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