Datu konvertēšana virknes formātā starp dažādiem datu tipiem parasti ir vienkāršs process Oracle, taču daži gadījumi ir nedaudz grūtāki nekā citi. Viens no tiem rodas, izmantojot Oracle, lai pārveidotu clob par varchar2, kas ir sarežģīti, jo a kolonnā varchar2 ir ne vairāk kā 4000 rakstzīmju, savukārt clob var uzglabāt milzīgu daudzumu rakstzīmju datus. Tomēr jūs joprojām varat sasniegt savu mērķi, izmantojot metodi dbms_lob substr vai to_char un norādot maksimālo izmēru.
CLOB un VARCHAR2 paskaidrots
CLOB (vai sarunvalodā "klobs") ir akronīms vārdam "rakstzīmju liels objekts", un tajā var saglabāt līdz pat 4 GB datu. To izmanto vairākas datu bāzes sistēmas, tostarp DB2 un Oracle. CLOB ir noderīgs, ja nepieciešams uzglabāt milzīgu datu apjomu, taču pats lielums dažās situācijās var radīt problēmas. Tāpēc pārveidošana no Oracle CLOB uz vieglāk pārvaldāma izmēra virknes formātu bieži ir laba pieeja pirms darbību veikšanas.
Dienas video
VARCHAR2 formāts saglabā mazāku datu apjomu, parasti līdz 4000 baitiem, ja vien neizmantojat paplašinātu maksimālo virknes izmēru, tādā gadījumā tas var sasniegt 32 767 baitus. Viena baita rakstzīmju kopai parasti kolonnā var iegūt līdz 4000 rakstzīmēm. Problēmas pārveidošanas laikā rodas šo divu datu formātu maksimālo izmēru neatbilstības dēļ.
Metode dbms_lob substr
Lai pārveidotu clob virkni par varchar2, atveriet programmu SQL *Plus. Veicamā reklāmguvuma sintakse ir šāda:
SELECT dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) NO tabulas
Šeit ir jāmaina vērtības iekavās, kā arī "tabula" beigās. Tie atbilst kolonnai ("clob_column") un tabulai, ar kuru strādājat. "for_how_many_bytes" sniedz iespēju norādīt, cik baitu datu vēlaties konvertēt, un "from_which_byte" ļauj norādīt sākuma punktu.
Tātad, ja jums ir tabula ar nosaukumu "nodokļi" un lauks ar nosaukumu "net_pay", un pieņemot, ka vēlaties 4000 baitus, sākot no pirmā, ievadiet:
SELECT dbms_lob.substr (net_pay, 4000, 1) NO nodokļiem
Lai pārvērstu virkni varchar2 formātā.
TO_CHAR metode
Varat arī izmantot komandu TO_CHAR ar ļoti līdzīgu sintaksi, lai sasniegtu to pašu mērķi:
SELECT TO_CHAR(SUBSTR (klob_kolonna, 0,3999)) NO tabulas
Šeit sākuma un beigu baiti ir norādīti kā 0 un 3999 (4000 rakstzīmju virknei, kas sākas no sākuma), bet lauki "clob_column" un "table" tiek izmantoti tieši tāpat kā pirms tam. Tātad tajā pašā piemērā varat ievadīt:
SELECT TO_CHAR(SUBSTR (neto_maksa, 0,3999)) NO nodokļiem
Būtībā tā vietā, lai pabeigtu procesu vienā solī, tiek izmantota komanda SUBSTR, lai izvilktu apakšvirkni no lielākās virknes, un pēc tam tā izmanto "to_char", lai apstrādātu konvertēšanu. Ja attiecīgajā clob kolonnā ir mazāk nekā 4000 baitu informācijas, varat ievadīt kolonnas nosaukumu iekavās aiz to_char, nevis norādīt apakšvirkni.