Konverzia údajov v reťazcovom formáte medzi rôznymi typmi údajov je v Oracle zvyčajne jednoduchý proces, ale niektoré prípady sú o niečo náročnejšie ako iné. Jedna z nich sa vyskytuje, keď používate Oracle na konverziu clob na varchar2, čo je ťažké, pretože a Stĺpec varchar2 má maximálne 4 000 znakov, zatiaľ čo clob môže uložiť obrovské množstvo znakov údajov. Stále však môžete dosiahnuť svoj cieľ pomocou metódy dbms_lob substr alebo to_char a špecifikovaním maximálnej veľkosti.
CLOB a VARCHAR2 vysvetlené
CLOB (alebo hovorovo „clob“) je skratka pre „veľký objekt“ a dokáže uložiť až 4 GB údajov. Používa ho niekoľko databázových systémov vrátane DB2 a Oracle. CLOB je užitočný, keď potrebujete uložiť veľké množstvo údajov, ale samotná veľkosť môže v niektorých situáciách spôsobiť problémy. To je dôvod, prečo je konverzia z Oracle CLOB na reťazcový formát spravovateľnejšej veľkosti často dobrým prístupom pred vykonaním operácií.
Video dňa
Formát VARCHAR2 ukladá menšie množstvá údajov, zvyčajne do 4 000 bajtov, pokiaľ nepoužijete rozšírenú maximálnu veľkosť reťazca, v takom prípade môže dosiahnuť 32 767 bajtov. Pre jednobajtovú znakovú sadu môžete zvyčajne získať až 4 000 znakov v stĺpci. Rozdiel medzi maximálnymi veľkosťami týchto dvoch dátových formátov je miestom, kde vznikajú problémy pri konverzii.
Metóda dbms_lob substr
Ak chcete previesť reťazec clob na varchar2, otvorte svoj program SQL *Plus. Syntax konverzie, ktorú musíte vykonať, je:
SELECT dbms_lob.substr( clob_column, for_how_many_bytes, from_ which_byte ) FROM table
Tu sú hodnoty v zátvorkách tie, ktoré musíte zmeniť, rovnako ako "tabuľka" na konci. Tieto zodpovedajú stĺpcu („clob_column“) a tabuľke, s ktorou pracujete. "for_how_many_bytes" vám dáva možnosť určiť, koľko bajtov údajov chcete previesť, a "from_which_byte" vám umožňuje určiť počiatočný bod.
Ak teda máte tabuľku s názvom „dane“ a pole s názvom „net_pay“ a za predpokladu, že chcete 4 000 bajtov počnúc prvým, zadáte:
SELECT dbms_lob.substr (net_pay, 4000, 1) FROM daní
Ak chcete previesť reťazec do formátu varchar2.
Metóda TO_CHAR
Na dosiahnutie rovnakého cieľa môžete použiť aj príkaz TO_CHAR s veľmi podobnou syntaxou:
SELECT TO_CHAR(SUBSTR (stĺpec_clonu, 0,3999)) FROM tabuľky
Tu sú počiatočné a koncové bajty špecifikované ako 0 a 3999 (pre reťazec so 4 000 znakmi začínajúci od začiatku), ale polia "clob_column" a "table" sa používajú presne rovnakým spôsobom ako predtým. Takže v rovnakom príklade môžete zadať:
SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) FROM daní
V podstate namiesto dokončenia procesu v jedinom kroku to používa príkaz SUBSTR na vytiahnutie podreťazca z väčšieho reťazca a potom použije "to_char" na spracovanie konverzie. Ak má príslušný stĺpec clob menej ako 4 000 bajtov informácií, môžete namiesto zadania podreťazca zadať názov stĺpca do zátvoriek za to_char.