Kako pretvoriti Clob u Varchar2 u Oracleu

click fraud protection

Pretvaranje podataka u format niza između različitih tipova podataka obično je jednostavan proces u Oracleu, ali neki su slučajevi malo zahtjevniji od drugih. Jedan od njih se događa kada koristite Oracle za pretvaranje clob u varchar2, što je teško jer a stupac varchar2 ima najviše 4000 znakova, dok clob može pohraniti ogromne količine znakova podaci. Ipak, još uvijek možete postići svoj cilj koristeći metodu dbms_lob substr ili to_char i navodeći maksimalnu veličinu.

CLOB i VARCHAR2 Objašnjeno

CLOB (ili kolokvijalno "clob") je akronim za "veliki objekt" i 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 stringa lakše upravljive veličine često dobar pristup prije izvođenja operacija.

Video dana

VARCHAR2 format pohranjuje manje količine podataka, obično do 4000 bajtova, osim ako ne koristite proširenu maksimalnu veličinu niza, u tom slučaju može ići do 32,767 bajtova. Za skup znakova od jednog bajta obično možete dobiti do 4000 znakova u stupcu. Problemi nastaju tijekom pretvorbe u neskladu između maksimalnih veličina ova dva formata podataka.

Metoda dbms_lob substr

Za pretvaranje niza klipa u varchar2, otvorite svoj SQL *Plus program. Sintaksa za pretvorbu 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 priliku 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 "taxes" i polje pod nazivom "net_pay", i pod pretpostavkom da želite 4000 bajtova počevši od prvog, unesite:

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)) IZ tablice

Ovdje su početni i završni bajtovi navedeni kao 0 i 3999 (za niz od 4000 znakova koji počinje od početka), ali polja "clob_column" i "table" koriste se na potpuno isti način kao prije. Dakle, u istom primjeru možete unijeti:

SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) IZ poreza

U osnovi, umjesto dovršavanja procesa u jednom koraku, ovo koristi naredbu SUBSTR za izvlačenje podniza iz većeg niza, a zatim koristi "to_char" za rukovanje 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.