Senin, 30 Juli 2012

Upper Case, Lower Case dan Initcap Case

Sebelumnya saya sudah membahas mengenai UPPER CASE dan LOWER CASE, sedikit tambahan ada juga yang namanya INITCAP. Mari kita lihat perbedaannya dari query sederhana berikut :
SELECT
  UPPER('IndONeSiA MerDEKa') UPPER_CASE,
  LOWER('IndONeSiA MerDEKa') LOWER_CASE,
  INITCAP('IndONeSiA MerDEKa') INITCAP_CASE
FROM DUAL;

Hasilnya adalah :
UPPER_CASE LOWER_CASE INITCAP_CASE
INDONESIA MERDEKA indonesia merdeka Indonesia Merdeka

Kesimpulannya mirip dengan post sebelumnya :
Fungsi UPPER digunakan untuk membuat sebuah String bisa menjadi huruf kapital semua
Fungsi LOWER digunakan untuk membuat sebuah String bisa menjadi huruf kecil semua
Fungsi INITCAP digunakan untuk membuat huruf depan sebuah String menjadi huruf kapital lalu diikuti huruf kecil dibelakangnya.

Manipulasi String dengan Upper Case dan Lower Case

Seringkali kita menemukan data di dalam sebuah tabel pengisian hurufnya campuran antara huruf kecil dan kapital. Hal ini menyulitkan kita ketika kita membuat sebuah filter di dalam WHERE. Bingung? Langsung saja ke contohnya sebagai berikut, ada tabel sebagai berikut :
ID_PENGARANG NAMA ALAMAT
P001 WISNU ARDIHERDIYAN YOGYAKARTA
P002 DIANA NASUTION MEDAN
P003 FAJAR NURDIANTORO PEKANBARU
P004 NURDIANSYAH MALUKU
P005 Fajar Nurdiantoro SEMARANG
P006 anAStAsia PUrbaSari NGANJUK

Ada query seperti ini :
SELECT
    *
FROM
    PENGARANG
WHERE
    NAMA = 'WISNU ARDIHERDIYAN';


Query diatas pasti menghasilkan nilai karena dari tabel diatas row yang memenuhi syarat di dalam WHERE.
ID_PENGARANG NAMA ALAMAT
P001 WISNU ARDIHERDIYAN YOGYAKARTA
Masalah terjadi kalau String yang dijadikan key di dalam WHERE berasal dari inputan dari aplikasi yang kita buat. Misal user menginputkan namanya dengan huruf kecil semua (contoh : 'wisnu ardiherdiyan'), pasti query diatas tidak menghasilkan nilai karena WHERE NAMA = 'wisnu ardiherdiyan' tidak tercantum di dalam tabel.
ID_PENGARANG NAMA ALAMAT



Supaya kita bisa mendapatkan nilainya walaupun user menginputkan nama dengan huruf besar atau huruf kecil atau bahkan campuran besar dan kecil, kita bisa memanfaatkan fungsi UPPER CASE atau LOWER CASE. Langsung saja, querynya seperti berikut :
SELECT
    *
FROM
    PENGARANG
WHERE
    NAMA = UPPER('wisnu ardiherdiyan');

Query tersebut akan mendapatkan nilai yang kita inginkan, karena UPPER('wisnu ardiherdiyan') akan membuat String tersebut menjadi huruf besar semua menjadi WISNU ARDIHERDIYAN.
ID_PENGARANG NAMA ALAMAT
P001 WISNU ARDIHERDIYAN YOGYAKARTA
Bagaimana jika kasus penulisan nama 'alay' justru berada di database seperti di row 6 ('anAStAsia PUrbaSari')? Untuk mendapatkan nilainya, kita bisa memodifikasi query menjadi seperti berikut :
SELECT
    *
FROM
    PENGARANG
WHERE
    UPPER(NAMA) = UPPER('anastasia purbasari');

Query diatas akan membuat data field NAMA menjadi huruf besar semua, dan inputan String 'anastasia purbasari' juga akan dibuat menjadi huruf besar semua.
ID_PENGARANG NAMA ALAMAT
P006 anAStAsia PUrbaSari NGANJUK

Kesimpulan :
Fungsi UPPER digunakan untuk membuat sebuah String bisa menjadi huruf kapital semua, dan fungsi LOWER digunakan untuk membuat sebuah String bisa menjadi huruf kecil semua.

Semoga bermanfaat.

Sabtu, 21 Juli 2012

Menampilkan Tanggal Sebagai String di Oracle (TO_CHAR)

-->
Di artikel sebelumnya kita sudah membahas tentang penggunaan fungsi TO_DATE di oracle. Nah sekarang kita balik, kita akan menampilkan dari tipe DATE menjadi STRING, mari kita mulai buat querynya.

Contoh penggunaan TO_CHAR di query :
SELECT
  SYSDATE,
  TO_CHAR(SYSDATE, 'DD-MM-YYYY') DATE_FORMAT1,
  TO_CHAR(SYSDATE, 'DD/MM/YYYY') DATE_FORMAT2,
  TO_CHAR(SYSDATE, 'DD MONTH YYYY') DATE_FORMAT3,
  TO_CHAR(SYSDATE, 'DD Month YYYY') DATE_FORMAT4,
  TO_CHAR(SYSDATE, 'DD fmMonth YYYY') DATE_FORMAT5
FROM DUAL;


Dari query diatas menghasilkan :

SYSDATE   DATE_FORMAT1  DATE_FORMAT2  DATE_FORMAT3  DATE_FORMAT4  DATE_FORMAT5
25-JUL-12 25-07-2012 25/07/2012 25 JULY      2012 25 July      2012 25 July 2012

Dari hasil diatas dapat dilihat kita dapat menampilkan ke dalam bentuk format yang berbeda-beda. Yang perlu mendapat perhatian adalah ketika menggunakan fm pada month (bulan), ketika tidak menggunakan fm akan terdapat banyak spasi diantara bulan dan tahun, namun ketika menambahkan fm maka hanya ada satu spasi yang muncul.


Download Video Tutorial


Rabu, 18 Juli 2012

Date Format di Oracle 2 (TO_DATE di Oracle)

Ada berbagai macam penulisan tanggal yang sering kita lihat misalnya :
24-07-2012
24/07/2012
24 JUNE 2012
 dll...

Bagaimana caranya supaya bentuk-bentuk diatas dapat kita simpan di database dengan tipe DATE?

Solusi supaya semua date format diatas dapat masuk di tipe date adalah dengan menggunakan fungsi TO_DATE('inputan_tanggal', 'format_tanggal_inputan'), contohnya sebagai berikut :

SELECT
  SYSDATE TANGGAL1,
  TO_DATE('24-JUN-12') TANGGAL2,
  TO_DATE('24/06/2012', 'DD/MM/YYYY') TANGGAL3,
  TO_DATE('24-06-2012', 'DD-MM-YYYY') TANGGAL4,
  TO_DATE('24 JUNE 2012', 'DD MONTH YYYY') TANGGAL5,
  TO_DATE('JUNE 24 2012', 'MONTH DD YYYY') TANGGAL6
FROM DUAL;

Fungsi TO_DATE didalam query diatas akan menghasilkan nilai yang sama yaitu :


TANGGAL1 TANGGAL2 TANGGAL3 TANGGAL4 TANGGAL5 TANGGAL6
24-JUN-12 24-JUN-12 24-JUN-12 24-JUN-12 24-JUN-12 24-JUN-12

Jadi fungsi TO_DATE diatas digunakan untuk mengkonversi dari STRING menjadi DATE.

Download Video Tutorial


Senin, 16 Juli 2012

Date Format di Oracle

Dalam query di Oracle, sintak query untuk menampilkan date berbeda dengan apa yang ada di MySQL. Di Oracle kita menggunakan fungsi TO_DATE.

Contoh to_date di Oracle :
SELECT
  TO_DATE('12-JUN-14') TANGGAL
FROM DUAL;

Hasil query diatas :
TANGGAL
12-JUN-14

Bagaimana jika ingin menampilkan dengan format dd/mm/yyyy?
Jawabannya, dia harus dijadikan menjadi string terlebih dahulu, caranya pakai TO_CHAR. Query diatas tinggal kita tambahkan sedikit perubahan seperti berikut :
SELECT
  TO_CHAR(TO_DATE('12-JUN-14'), 'dd/mm/yyyy') TANGGAL
FROM DUAL;

Hasil query diatas :
TANGGAL
12/06/2014

Sabtu, 14 Juli 2012

Fungsi NVL dalam Query

Seringkali kita menjumpai nilai null dalam sebuah tabel. Padahal kita tidak menginginkan nilai tersebut null, melainkan terisi nilai tertentu. Solusi masalah tersebut dapat kita selesaikan menggunakan fungsi NVL.

Misal ada tabel T_BUKU :

KODE_BUKU JUDUL ID_PENGARANG HARGA
BK01 BUDIDAYA IKAN P001 (NULL)
BK02 BUDIDAYA CACING P001 (NULL)
BK03 PENGOLAHAN LIMBAH (NULL) 17500
BK04 MERAWAT TANAMAN (NULL) 10000

Contoh Fungsi NVL :
SELECT
  KODE_BUKU,
  JUDUL,
  NVL(ID_PENGARANG, '-') ID_PENGARANG,
  NVL(HARGA, 0) HARGA
FROM
  T_BUKU;


Maka fungsi NVL diatas akan menghasilkan output :

KODE_BUKU JUDUL ID_PENGARANG HARGA
BK01 BUDIDAYA IKAN P001 0
BK02 BUDIDAYA CACING P001 0
BK03 PENGOLAHAN LIMBAH - 17500
BK04 MERAWAT TANAMAN - 10000

Jadi, fungsi NVL berfungsi untuk mengembalikan sebuah nilai yang tadinya null menjadi nilai yang kita inginkan, entah itu decimal ataupun varchar.

Download Video Tutorial


Fungsi ABS dalam Query

Dalam membuat query, untuk melakukan operasi bilangan kadang kita membutuhkan nilai yang selalu positif. Contohnya adalah umur, umur manusia tidak mungkin berisi minus kan.

Misalkan saja ada salah input ternyata inputannya malah minus seperti contoh berikut,
Tabel T_KARYAWAN :
NAMA UMUR
RISTA -18
RANGGA 20
TIARA 17

Untuk membuat nilai minus menjadi positif, kita bisa menggunakan fungsi ABS.
Contoh Query Fungsi ABS :
SELECT NAMA, ABS(UMUR) FROM T_KARYAWAN;

Maka hasil fungsi ABS diatas adalah :
NAMA UMUR
RISTA 18
RANGGA 20
TIARA 17

Rista yang tadinya memiliki nilai umur minus sekarang menjadi positif.

Jadi di dalam query, fungsi ABS berfungsi untuk mendapatkan atau selalu mengembalikan nilai positif dari hasil operasi yang dijalankan.