Pada artikel yang lain tentang substring di SQL telah dibahas sebelumnya mengenai pemanfaatan function substring() dalam membuat query SQL. Selanjutnya apakah dapat substring dari suatu string tersebut direlasikan dengan data yang ada dalam tabel lain?
Masih bingung dengan pertanyaan di atas? OK misalkan ada kasus seperti di bawah ini.
Diketahui data dalam tabel mahasiswa sebagai berikut :
NIM Nama Mahasiswa
M0197001 Rosihan Ari Yuana
M0197002 Dwi Amalia Fitriani
M0297003 Faza Fauzan
M0298002 Nada Hasanah
M0398005 Yohana Dwi Ariyanto
M0398007 Ismail Hasan
Serta diketahui pula kode jurusan dan nama jurusan yang tersimpan dalam tabel Jurusan:
Kode Jurusan Nama Jurusan
M01 Matematika
M02 Fisika
M03 Kimia
Apabila kita lihat data dari kedua tabel, maka terdapat relasi antara kode jurusan dengan NIM mahasiswa, terutama digit pertama sampai ketiga, contoh M01 pada NIM M0197001. Digit ini selanjutnya kita namakan substring karena bagian dari string NIM bukan? Substring tersebut menunjukkan informasi jurusan si mahasiswa.
Nah seandainya kita diminta menampilkan hasil query berikut ini:
Tampilkan semua Nama Mahasiswa dan Nama Jurusannya!
Bagaimana bentuk query SQL nya? Seandainya dalam tabel mahasiswa tersedia sebuah field tersendiri untuk menyimpan informasi kode jurusan mahasiswa, tentunya relasinya mudah. Nah lantas bagaimana? Ya…. relasikan saja substring dari NIM yang menunjukkan kode jurusan dengan field kode jurusan dalam tabel Jurusan. Berikut ini adalah statement SQL nya:
SELECT mhs.namaMhs, jurusan.namaJurusan
FROM mhs, jurusan
WHERE substring(mhs.nim, 1, 3) = jurusan.kodeJurusan;
dengan asumsi bahwa ‘mhs’ dan ‘jurusan’ adalah nama masing-masing tabel.
Maksud dari perintah substring(mhs.nim, 1, 3) adalah mengambil karakter 1 s/d 3 dari semua data yang ada dalam field NIM pada tabel mhs.
Selanjutnya bagaimana dengan permintaan query berikut ini?
Tampilkan nama mahasiswa dan nama jurusannya, dari mahasiswa yang berangkatan 97.
Untuk membuat statement SQL sesuai permintaan di atas, kita harus lihat dulu bahwa untuk tahun angkatan mahasiswa dapat dilihat dari karakter 4 s/d 5 dari NIM. Sehingga lagi-lagi kita gunakan substring(). Berikut ini statement SQL nya
SELECT mhs.namaMhs, jurusan.namaJurusan
FROM mhs, jurusan
WHERE substring(mhs.nim, 1, 3) = jurusan.kodeJurusan AND
substring(mhs.nim, 4, 2) = '97';
Mungkin ada bertanya, mengapa 97 nya diapit dengan tanda petik? Ya… 97 di sini kan merupakan substring dari string NIM mahasiswa, sehingga tahun angkatan ini juga merupakan string dan bukannya integer atau tipe data bilangan yang lain.
