Kako pretvoriti iz Clob u Varchar2 u Oracleu
Pretvaranje podataka u format niza između različitih vrsta podataka obično je jednostavan proces u Oracleu, ali neki su slučajevi malo zahtjevniji od drugih. Jedan od njih događa se kada koristite Oracle za pretvaranje clob u varchar2, što je teško jer stupac varchar2 ima maksimalno 4000 znakova, dok clob može pohraniti ogromne količine znakovnih podataka. Ipak, svoj cilj još uvijek možete postići korištenjem metode dbms_lob substr ili to_char i navođenjem maksimalne veličine.
Objašnjenje CLOB i VARCHAR2
CLOB (ili kolokvijalno "clob") je akronim za "character large object", a može pohraniti do 4 GB podataka. Koristi ga nekoliko sustava baza podataka, uključujući DB2 i Oracle. CLOB je koristan kada trebate pohraniti velike količine podataka, ali sama veličina može uzrokovati probleme u nekim situacijama. To je razlog zašto je pretvorba iz Oracle CLOB-a u format niza lakše upravljive veličine često dobar pristup prije izvođenja operacija.
Format VARCHAR2 pohranjuje manje količine podataka, obično do 4.000 bajtova, osim ako ne koristite proširenu maksimalnu veličinu niza, u kojem slučaju može ići do 32.767 bajtova. Za jednobajtni skup znakova obično možete dobiti do 4000 znakova u stupcu. Neusklađenost između maksimalnih veličina ova dva formata podataka mjesto je gdje nastaju problemi tijekom pretvorbe.
Metoda dbms_lob substr
Za pretvaranje clob niza u varchar2, otvorite svoj SQL *Plus program. Sintaksa za konverziju koju trebate izvesti je:
SELECT dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) IZ tablice
Ovdje su vrijednosti u zagradama one koje morate promijeniti, kao i "tablica" na kraju. Oni odgovaraju stupcu ("clob_column") i tablici s kojom radite. "for_how_many_bytes" daje vam mogućnost da odredite koliko bajtova podataka želite pretvoriti, a "from_which_byte" vam omogućuje da odredite početnu točku.
Dakle, ako imate tablicu pod nazivom "porezi" i polje pod nazivom "net_pay", i pod pretpostavkom da želite 4000 bajtova počevši od prvog, unijeli biste:
SELECT dbms_lob.substr(net_pay, 4000, 1) IZ poreza
Za pretvaranje niza u format varchar2.
Metoda TO_CHAR
Također možete koristiti naredbu TO_CHAR s vrlo sličnom sintaksom za postizanje istog cilja:
SELECT TO_CHAR(SUBSTR (clob_column,0,3999)) FROM table
Ovdje su početni i završni bajt navedeni kao 0 i 3999 (za niz od 4000 znakova počevši od početka), ali polja "clob_column" i "table" koriste se na potpuno isti način kao i prije. Dakle, u istom primjeru možete unijeti:
SELECT TO_CHAR(SUBSTR (net_pay,0,3999)) FROM taxes
U osnovi, umjesto dovršetka procesa u jednom koraku, ovo koristi naredbu SUBSTR za povlačenje podniza iz većeg niza, a zatim koristi "to_char" za upravljanje konverzijom. Ako dotični stupac clob ima manje od 4000 bajtova informacija, možete unijeti naziv stupca u zagrade nakon to_char umjesto navođenja podniza.