Mengonversi data dalam format string antara tipe data yang berbeda biasanya merupakan proses yang mudah di Oracle, tetapi beberapa kasus sedikit lebih menantang daripada yang lain. Salah satunya terjadi ketika Anda menggunakan Oracle untuk mengonversi clob ke varchar2, yang sulit karena a kolom varchar2 memiliki maksimum 4.000 karakter, sedangkan clob dapat menyimpan karakter dalam jumlah besar data. Anda masih dapat mencapai tujuan Anda, baik menggunakan metode substr dbms_lob atau to_char dan menentukan ukuran maksimum.
CLOB dan VARCHAR2 Dijelaskan
CLOB (atau "clob" bahasa sehari-hari) adalah akronim untuk "objek karakter besar," dan dapat menyimpan hingga 4 GB data. Ini digunakan oleh beberapa sistem database, termasuk DB2 dan Oracle. CLOB berguna ketika Anda perlu menyimpan data dalam jumlah besar, tetapi ukurannya sendiri dapat menyebabkan masalah dalam beberapa situasi. Inilah sebabnya mengapa konversi dari Oracle CLOB ke format string dengan ukuran yang lebih mudah dikelola seringkali merupakan pendekatan yang baik sebelum melakukan operasi.
Video Hari Ini
Format VARCHAR2 menyimpan data dalam jumlah yang lebih kecil, biasanya hingga 4.000 byte, kecuali jika Anda menggunakan ukuran string maksimum yang diperluas, dalam hal ini dapat mencapai hingga 32.767 byte. Untuk set karakter byte tunggal, Anda biasanya bisa mendapatkan hingga 4.000 karakter dalam satu kolom. Perbedaan antara ukuran maksimum dari dua format data ini adalah di mana masalah muncul selama konversi.
Metode substr dbms_lob
Untuk mengonversi string gumpalan ke varchar2, buka program SQL *Plus Anda. Sintaks untuk konversi yang perlu Anda lakukan adalah:
PILIH dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) DARI tabel
Di sini nilai dalam tanda kurung adalah nilai yang harus Anda ubah, serta "tabel" di bagian akhir. Ini sesuai dengan kolom ("clob_column") dan tabel yang sedang Anda kerjakan. "for_how_many_bytes" memberi Anda kesempatan untuk menentukan berapa banyak byte data yang ingin Anda konversi, dan "from_which_byte" memungkinkan Anda menentukan titik awal.
Jadi, jika Anda memiliki tabel yang disebut "pajak" dan bidang yang disebut "net_pay," dan dengan asumsi Anda menginginkan 4.000 byte mulai dari yang pertama, Anda akan memasukkan:
PILIH dbms_lob.substr (net_pay, 4000, 1) DARI pajak
Untuk mengubah string menjadi format varchar2.
Metode TO_CHAR
Anda juga dapat menggunakan perintah TO_CHAR dengan sintaks yang sangat mirip untuk mencapai tujuan yang sama:
PILIH TO_CHAR(SUBSTR (clob_column, 0,3999)) DARI tabel
Di sini, byte awal dan akhir ditentukan sebagai 0 dan 3999 (untuk 4.000 karakter string yang dimulai dari awal), tetapi bidang "clob_column" dan "tabel" digunakan dengan cara yang sama seperti sebelum. Jadi, dalam contoh yang sama, Anda dapat memasukkan:
PILIH TO_CHAR(SUBSTR (net_pay, 0,3999)) DARI pajak
Pada dasarnya, daripada menyelesaikan proses dalam satu langkah, ini menggunakan perintah SUBSTR untuk menarik substring dari string yang lebih besar, dan kemudian menggunakan "to_char" untuk menangani konversi. Jika kolom gumpalan yang dimaksud memiliki informasi kurang dari 4.000 byte, Anda dapat memasukkan nama kolom dalam tanda kurung setelah to_char alih-alih menentukan substring.