Kuidas Oracle'is Clobist Varchar2-ks teisendada

Andmete teisendamine stringivormingus erinevate andmetüüpide vahel on Oracle'is tavaliselt lihtne protsess, kuid mõned juhtumid on pisut keerulisemad kui teised. Üks neist ilmneb siis, kui kasutate Oracle'i clobi teisendamiseks varchar2-ks, mis on keeruline, kuna a veerus varchar2 on maksimaalselt 4000 tähemärki, samas kui clob mahutab tohutul hulgal märke andmeid. Siiski saate oma eesmärgi siiski saavutada, kasutades kas meetodit dbms_lob substr või to_char ja määrates maksimaalse suuruse.

CLOB ja VARCHAR2 selgitatud

CLOB (või kõnekeeles "klob") on akronüüm sõnadest "character large object" ja see võib salvestada kuni 4 GB andmeid. Seda kasutavad mitmed andmebaasisüsteemid, sealhulgas DB2 ja Oracle. CLOB on kasulik, kui teil on vaja salvestada tohutul hulgal andmeid, kuid suurus ise võib mõnes olukorras probleeme tekitada. Seetõttu on Oracle CLOB-ilt teisendamine paremini hallatava suurusega stringivormingusse sageli hea lähenemine enne toimingute sooritamist.

Päeva video

Vorming VARCHAR2 salvestab väiksemaid andmemahtusid, tavaliselt kuni 4000 baiti, välja arvatud juhul, kui kasutate pikendatud maksimaalset stringi suurust. Sel juhul võib see ulatuda kuni 32 767 baiti. Ühebaidise märgistiku puhul saate tavaliselt veergu saada kuni 4000 tähemärki. Konversiooni käigus tekivad probleemid nende kahe andmevormingu maksimaalsete suuruste lahknevuse tõttu.

Meetod dbms_lob substr

Klobistringi teisendamiseks varchar2-ks avage programm SQL *Plus. Konversiooni süntaks, mida peate sooritama, on järgmine:

SELECT dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) tabelist

Siin on sulgudes olevad väärtused need, mida peate muutma, samuti "tabel" lõpus. Need vastavad veerule ("clob_column") ja tabelile, millega töötate. "for_how_many_bytes" annab teile võimaluse määrata, mitu baiti andmeid soovite teisendada, ja "from_which_byte" võimaldab määrata lähtepunkti.

Seega, kui teil on tabel nimega "maksud" ja väli nimega "net_pay" ning eeldades, et soovite 4000 baiti alates esimesest, sisestage:

SELECT dbms_lob.substr (netomakse, 4000, 1) maksudest

Stringi teisendamiseks varchar2-vormingusse.

TO_CHAR meetod

Sama eesmärgi saavutamiseks võite kasutada ka väga sarnase süntaksiga käsku TO_CHAR:

SELECT TO_CHAR(SUBSTR (klob_veerg, 0,3999)) tabelist

Siin on algus- ja lõppbaitid määratud kui 0 ja 3999 (4000 tähemärgistringi puhul, mis algab algusest), kuid välju "clob_column" ja "table" kasutatakse täpselt samamoodi nagu enne. Nii et samas näites võite sisestada:

SELECT TO_CHAR(SUBSTR (netomakse, 0,3999)) maksudest

Põhimõtteliselt, selle asemel, et protsess ühe sammuga lõpule viia, kasutab see suuremast stringist alamstringi tõmbamiseks käsku SUBSTR ja seejärel konversiooni käsitlemiseks käsku "to_char". Kui kõnealuses veerus on vähem kui 4000 baiti teavet, saate alamstringi määramise asemel sisestada veeru nime pärast to_char sulgudesse.