Fungsi Oracle CHR

Salah satu presentasi yang saya nikmati di Rocky Mountain Oracle Users Group (RMOUG) Training Days 2010 adalah presentasi Stephen Jackson "Menggunakan SQL untuk Menghasilkan SQL." Saya telah menggunakan beberapa teknik yang dia diskusikan dalam presentasinya agar SQL menghasilkan SQL, tetapi satu hal yang tidak terpikirkan oleh saya adalah menggunakan fungsi CHR untuk membuat skrip lebih mudah dibaca. Meskipun posting ini berfokus pada penggunaan implementasi fungsi string CHR Oracle, database lain mendukung fungsi CHR (atau CHAR) juga.

Salah satu contoh kegunaan CHR adalah dalam membuat hasil yang menyertakan karakter yang signifikan dalam kueri itu sendiri. Menggunakan CHR dengan tepat memungkinkan pengembang SQL untuk menghindari kebutuhan untuk melarikan diri dari karakter ini dengan signifikansi sintaks kueri. Misalnya, untuk mencetak nama belakang karyawan dalam skema sampel HR Oracle dengan tanda kutip tunggal di sekitar nama belakang, seseorang dapat menulis kueri seperti ini:

select '''' || last_name || '''' from employees; 

Empat tanda kutip tunggal berhasil lolos dari tanda kutip sebelum dan sesudah nama belakang. Sayangnya, kutipan dapat menjadi mudah hilang, terutama untuk kueri yang lebih kompleks. Karena kode desimal ASCII 39 menghasilkan kutipan tunggal ketika diteruskan ke CHR, ekspresi tersebut CHR(39)dapat digunakan sebagai gantinya seperti yang ditunjukkan berikut ini:

select CHR(39) || last_name || CHR(39) from employees; 

Bagi saya, ini lebih mudah dibaca. Demikian pula, karakter yang lebih sulit dapat ditampilkan dengan fungsi CHR. Misalnya, Stephen menunjukkan dalam presentasinya bahwa CHR (10) dapat digunakan untuk mencetak baris baru pada output.

Salah satu ide menarik yang dibahas Stephen adalah penggunaan skrip sederhana untuk menampilkan berbagai representasi karakter yang tersedia melalui fungsi CHR. Anda selalu dapat merujuk sumber daya seperti Tech on the Net's ASCII Chart atau asciitable.com, tetapi menarik untuk hanya menampilkan representasi melalui kode:

-- displayCHR.sql -- -- Display the characters associated with basic and extended ASCII codes. -- SET head off SET pagesize 0 SET linesize 120 SET trimspool on SET feedback off SET verify off SET serveroutput on size 5000 BEGIN FOR i IN 32..255 loop Dbms_output.put_line(i || ' ' || chr(i)); END loop; END; / 

Potongan kode di atas, ketika dijalankan dalam SQL * Plus, akan menampilkan sejumlah besar karakter yang tersedia dalam kumpulan karakter ASCII dasar dan tambahan. Seseorang dapat menggunakan perintah spool untuk mengumpulkan output ke file. Pada mesin saya yang berbasis Windows, saya bahkan dapat melihat simbol yang dihasilkan ini dalam file keluaran spool menggunakan aplikasi Notepad dasar.

Kesimpulan

Seperti yang ditunjukkan Stephen dalam presentasinya, fungsi CHR dapat membuat skrip SQL * Plus lebih mudah dibaca dan dipelihara.

Cerita ini, "Oracle CHR Function" pada awalnya diterbitkan oleh JavaWorld.