Jak przekonwertować z Clob do Varchar2 w Oracle?

Konwertowanie danych w formacie ciągu między różnymi typami danych jest zwykle prostym procesem w Oracle, ale niektóre przypadki są nieco trudniejsze niż inne. Jeden z nich występuje, gdy używasz Oracle do konwersji clob na varchar2, co jest trudne, ponieważ Kolumna varchar2 ma maksymalnie 4000 znaków, podczas gdy clob może przechowywać ogromne ilości znaków dane. Jednak nadal możesz osiągnąć swój cel, używając metody dbms_lob substr lub to_char i określając maksymalny rozmiar.

Wyjaśnienie CLOB i VARCHAR2

CLOB (lub potocznie „clob”) to akronim od „znak duży obiekt” i może przechowywać do 4 GB danych. Jest używany przez kilka systemów baz danych, w tym DB2 i Oracle. CLOB przydaje się, gdy trzeba przechowywać duże ilości danych, ale sam rozmiar może w niektórych sytuacjach powodować problemy. Dlatego konwersja z Oracle CLOB do formatu ciągu o łatwiejszym do zarządzania rozmiarze jest często dobrym podejściem przed wykonaniem operacji.

Wideo dnia

Format VARCHAR2 przechowuje mniejsze ilości danych, zwykle do 4000 bajtów, chyba że używasz rozszerzonego maksymalnego rozmiaru ciągu, w którym to przypadku może osiągnąć 32 767 bajtów. W przypadku zestawu znaków jednobajtowych zwykle można uzyskać do 4000 znaków w kolumnie. Rozbieżność między maksymalnymi rozmiarami tych dwóch formatów danych jest miejscem, w którym pojawiają się problemy podczas konwersji.

Metoda dbms_lob substr

Aby przekonwertować ciąg znaków clob na varchar2, otwórz program SQL *Plus. Składnia konwersji, którą musisz wykonać, to:

SELECT dbms_lob.substr( clob_column, for_jak_wiele_bajtów, z_który_bajt ) FROM tabela

Tutaj wartości w nawiasach to te, które należy zmienić, a także „tabela” na końcu. Odpowiadają one kolumnie („clob_column”) i tabeli, z którą pracujesz. Pole „for_ile_bajtów” daje Ci możliwość określenia, ile bajtów danych chcesz przekonwertować, a „z_który_bajt” pozwala określić punkt początkowy.

Tak więc, jeśli masz tabelę o nazwie „podatki” i pole o nazwie „net_pay” i zakładając, że chcesz 4000 bajtów, zaczynając od pierwszego, wpisz:

SELECT dbms_lob.substr (net_pay, 4000, 1) FROM podatki

Aby przekonwertować ciąg do formatu varchar2.

Metoda TO_CHAR

Możesz również użyć polecenia TO_CHAR o bardzo podobnej składni, aby osiągnąć ten sam cel:

SELECT TO_CHAR(SUBSTR (clob_column, 0,3999)) FROM table

Tutaj początek i koniec bajtów są określone jako 0 i 3999 (dla ciągu 4000 znaków zaczynającego się) od początku), ale pola "clob_column" i "table" są używane dokładnie w taki sam sposób, jak zanim. Tak więc w tym samym przykładzie możesz wpisać:

SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) Z podatków

Zasadniczo, zamiast kończyć proces w jednym kroku, używa polecenia SUBSTR do wyciągnięcia podciągu z większego ciągu, a następnie używa "to_char" do obsługi konwersji. Jeśli dana kolumna clob ma mniej niż 4000 bajtów informacji, możesz wprowadzić nazwę kolumny w nawiasach po to_char zamiast określać podciąg.