Convertirea datelor într-un format de șir între diferite tipuri de date este de obicei un proces simplu în Oracle, dar unele cazuri sunt puțin mai dificile decât altele. Una dintre acestea apare atunci când utilizați Oracle pentru a converti clob în varchar2, ceea ce este dificil deoarece a Coloana varchar2 are maximum 4.000 de caractere, în timp ce clob poate stoca cantități uriașe de caractere date. Totuși, vă puteți atinge obiectivul, folosind fie metoda dbms_lob substr, fie to_char și specificând o dimensiune maximă.
CLOB și VARCHAR2 explicate
CLOB (sau „clob” în mod colocvial) este un acronim pentru „caracter mare obiect” și poate stoca până la 4 GB de date. Este folosit de mai multe sisteme de baze de date, inclusiv DB2 și Oracle. CLOB este util atunci când trebuie să stocați cantități mari de date, dar dimensiunea în sine poate cauza probleme în unele situații. Acesta este motivul pentru care conversia dintr-un Oracle CLOB într-un format șir de dimensiuni mai ușor de gestionat este adesea o abordare bună înainte de a efectua operațiuni.
Videoclipul zilei
Formatul VARCHAR2 stochează cantități mai mici de date, de obicei până la 4.000 de octeți, cu excepția cazului în care utilizați o dimensiune maximă extinsă a șirului, caz în care poate ajunge până la 32.767 de octeți. Pentru un set de caractere pe un singur octet, de obicei puteți obține până la 4.000 de caractere într-o coloană. Discrepanța dintre dimensiunile maxime ale acestor două formate de date este locul în care apar problemele în timpul conversiei.
Metoda dbms_lob substr
Pentru a converti un șir clob în varchar2, deschideți programul SQL *Plus. Sintaxa pentru conversia pe care trebuie să o efectuați este:
SELECTAȚI dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) DIN tabel
Aici valorile din paranteze sunt cele pe care trebuie să le modificați, precum și „tabelul” de la sfârșit. Acestea corespund coloanei ("clob_column") și tabelului cu care lucrați. „for_how_many_bytes” vă oferă posibilitatea de a specifica câți octeți de date doriți să convertiți, iar „from_which_byte” vă permite să specificați un punct de plecare.
Deci, dacă aveți un tabel numit „taxe” și un câmp numit „net_pay” și presupunând că doriți 4.000 de octeți începând de la primul, ați introduce:
SELECTAȚI dbms_lob.substr (net_pay, 4000, 1) FROM taxe
Pentru a converti șirul în format varchar2.
Metoda TO_CHAR
De asemenea, puteți utiliza comanda TO_CHAR cu o sintaxă foarte similară pentru a atinge același obiectiv:
SELECT TO_CHAR(SUBSTR (clob_column, 0,3999)) FROM tabel
Aici, octeții de început și de sfârșit sunt specificați ca 0 și 3999 (pentru un șir de 4.000 de caractere care începe de la început), dar câmpurile „clob_column” și „table” sunt folosite exact în același mod ca și inainte de. Deci, în același exemplu, puteți introduce:
SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) FROM taxe
Practic, în loc să finalizeze procesul într-un singur pas, aceasta folosește comanda SUBSTR pentru a extrage un subșir din șirul mai mare, apoi folosește „to_char” pentru a gestiona conversia. Dacă coloana clob în cauză are mai puțin de 4.000 de octeți de informații, puteți introduce numele coloanei în paranteze după to_char în loc să specificați un subșir.