Kako pretvoriti iz Clob v Varchar2 v Oracle
Pretvarjanje podatkov v nizovnem formatu med različnimi tipi podatkov je običajno preprost postopek v Oraclu, vendar so nekateri primeri nekoliko zahtevnejši od drugih. Eden od teh se zgodi, ko uporabite Oracle za pretvorbo clob v varchar2, kar je težko, ker ima stolpec varchar2 največ 4000 znakov, medtem ko lahko clob shrani ogromne količine znakovnih podatkov. Še vedno lahko dosežete svoj cilj z uporabo metode dbms_lob substr ali to_char in določite največjo velikost.
Razlaga CLOB in VARCHAR2
CLOB (ali pogovorno "clob") je akronim za "znakovno velik objekt" in lahko shrani do 4 GB podatkov. Uporablja ga več sistemov baz podatkov, vključno z DB2 in Oracle. CLOB je uporaben, ko morate shraniti velike količine podatkov, vendar lahko sama velikost v nekaterih situacijah povzroči težave. Zato je pretvorba iz Oracle CLOB v nizovni format bolj obvladljive velikosti pogosto dober pristop pred izvajanjem operacij.
Format VARCHAR2 shranjuje manjše količine podatkov, običajno do 4.000 bajtov, razen če uporabite razširjeno največjo velikost niza, v tem primeru lahko doseže do 32.767 bajtov. Za enobajtni nabor znakov lahko običajno dobite do 4000 znakov v stolpcu. Težave med pretvorbo nastanejo zaradi neskladja med največjimi velikostmi teh dveh formatov podatkov.
Metoda dbms_lob substr
Če želite pretvoriti niz clob v varchar2, odprite program SQL *Plus. Sintaksa za pretvorbo, ki jo morate izvesti, je:
SELECT dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) IZ tabele
Tukaj so vrednosti v oklepajih tiste, ki jih morate spremeniti, kot tudi "tabela" na koncu. Ti ustrezajo stolpcu ("clob_column") in tabeli, s katero delate. »for_how_many_bytes« vam omogoča, da določite, koliko bajtov podatkov želite pretvoriti, »from_which_byte« pa vam omogoča, da določite začetno točko.
Torej, če imate tabelo z imenom "davki" in polje z imenom "net_pay," in ob predpostavki, da želite 4000 bajtov od prvega, bi vnesli:
IZBERI dbms_lob.substr(net_pay, 4000, 1) IZ davkov
Če želite pretvoriti niz v obliko varchar2.
Metoda TO_CHAR
Za dosego istega cilja lahko uporabite tudi ukaz TO_CHAR z zelo podobno sintakso:
SELECT TO_CHAR(SUBSTR (clob_column,0,3999)) FROM tabela
Tu sta začetni in končni bajt podana kot 0 in 3999 (za niz s 4000 znaki, ki se začne od začetka), vendar se polji "clob_column" in "table" uporabljata na povsem enak način kot prej. Torej, v istem primeru lahko vnesete:
SELECT TO_CHAR(SUBSTR (net_pay,0,3999)) FROM davki
V bistvu, namesto dokončanja postopka v enem samem koraku, to uporablja ukaz SUBSTR, da povleče podniz iz večjega niza, nato pa uporabi "to_char" za obdelavo pretvorbe. Če ima zadevni stolpec clob manj kot 4000 bajtov informacij, lahko namesto podajanja podniza vnesete ime stolpca v oklepaj za to_char.