Преобразуването на данни в низов формат между различни типове данни обикновено е лесен процес в Oracle, но някои случаи са малко по-предизвикателни от други. Едно от тях се случва, когато използвате Oracle за преобразуване на clob в varchar2, което е трудно, тъй като a Колоната varchar2 има максимум 4000 знака, докато clob може да съхранява огромни количества знаци данни. Все пак можете да постигнете целта си, като използвате или метода dbms_lob substr, или to_char и укажете максимален размер.
CLOB и VARCHAR2 са обяснени
CLOB (или „clob“ разговорно) е акроним за „голям обект на символи“ и може да съхранява до 4 GB данни. Използва се от няколко системи за бази данни, включително DB2 и Oracle. CLOB е полезен, когато трябва да съхранявате огромни количества данни, но самият размер може да причини проблеми в някои ситуации. Ето защо преобразуването от Oracle CLOB в низов формат с по-управляем размер често е добър подход преди извършване на операции.
Видео на деня
Форматът VARCHAR2 съхранява по-малки количества данни, обикновено до 4 000 байта, освен ако не използвате разширен максимален размер на низа, в който случай може да достигне до 32 767 байта. За еднобайтов набор от знаци обикновено можете да получите до 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" за обработка на преобразуването. Ако въпросната колона cob има по-малко от 4000 байта информация, можете да въведете името на колоната в скоби след to_char, вместо да посочвате подниз.