Pretvorba podatkov v obliki niza med različnimi vrstami podatkov je v Oraclu običajno preprost postopek, vendar so nekateri primeri nekoliko bolj zahtevni kot drugi. Eden od teh se zgodi, ko uporabite Oracle za pretvorbo clob v varchar2, kar je težko, ker a stolpec varchar2 ima največ 4000 znakov, medtem ko lahko clob shrani ogromno znakov podatkov. Še vedno pa lahko dosežete svoj cilj z uporabo metode dbms_lob substr ali to_char in določite največjo velikost.
CLOB in VARCHAR2 Razloženo
CLOB (ali "clob" pogovorno) je akronim za "znak velik predmet" 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 format niza z bolj obvladljivo velikostjo pogosto dober pristop pred izvajanjem operacij.
Video dneva
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 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 strniti niz pretvoriti v varchar2, odprite svoj 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 daje možnost, 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:
IZBIRI dbms_lob.substr (net_pay, 4000, 1) IZ davkov
Če želite pretvoriti niz v format 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)) IZ tabele
Tu sta začetni in končni bajt določena kot 0 in 3999 (za niz 4000 znakov, ki se začne od začetka), vendar se polji "clob_column" in "table" uporabljata na popolnoma enak način kot prej. Torej, v istem primeru lahko vnesete:
SELECT TO_CHAR(SUBSTR (neto_plačilo, 0,3999)) IZ davkov
V bistvu namesto dokončanja postopka v enem samem koraku to uporablja ukaz SUBSTR za izvlečenje podniza iz večjega niza, nato pa uporabi "to_char" za obdelavo pretvorbe. Če ima zadevni stolpec cob manj kot 4000 bajtov informacij, lahko namesto podniza vnesete ime stolpca v oklepaje za to_char.