Kako pretvoriti iz Clob v Varchar2 v Oraclu

click fraud protection

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.