Tutorial MySQL Lanjutan

8. Memotong String

Tutorial Belajar MySQL: Cara Memotong String Hasil Query MySQL (SUBSTRING)

Ketika menampilkan tabel hasil query, kadang kita perlu memecah data dari sebuah kolom. MySQL menyediakan beberapa fungsi yang bisa digunakan untuk keperluan ini, seperti fungsi SUBSTRING, SUBSTR, MID, LEFT dan RIGHT. Kita akan membahas cara penggunaan kelima fungsi ini.


Cara Penggunaan Fungsi SUBSTRING, SUBSTR dan MID MySQL

MySQL meyediakan fungsi SUBSTRING untuk memotong string. Fungsi ini membutuhkan 2 argumen utama dan 1 argumen tambahan (opsional). Berikut format dasarnya:

1
SUBSTRING (nama_kolom, index_awal, jumlah_karakter)
  • nama_kolom adalah nama kolom tabel yang akan diambil karakternya (sebagai sumber string)
  • index_awal bisa diisi dengan angka yang berfungsi sebagai index awal karakter yang ingin diambil, dihitung dari index 1 pada karakter pertama, index 2 pada karakter kedua, dst. Apabila diinput dengan nilai negatif, index akan dihitung mulai dari akhir string.
  • jumlah_karakter adalah argumen opsional yang jika tidak ditulis, fungsi SUBSTRING akan mengambil seluruh karakter hingga akhir string. Jika ditulis, maka ini berfungsi sebagai batasan jumlah karakter yang akan diambil.

Agar lebih mudah dipahami, langsung saja kita masuk ke praktek. Kali ini saya menggunakan kolom NIP dari tabel daftar_dosen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
mysql> SELECT NIP FROM daftar_dosen;
+------------+
| NIP        |
+------------+
| 0160436012 |
| 0260432002 |
| 0275430005 |
| 0480432066 |
| 0576431001 |
| 0770435006 |
| 0869437003 |
| 1080432007 |
+------------+
8 rows in set (0.00 sec)
  
mysql> SELECT SUBSTRING(NIP, 4) FROM daftar_dosen;
+-------------------+
| SUBSTRING(NIP, 4) |
+-------------------+
| 0436012           |
| 0432002           |
| 5430005           |
| 0432066           |
| 6431001           |
| 0435006           |
| 9437003           |
| 0432007           |
+-------------------+
8 rows in set (0.00 sec)
  
mysql> SELECT SUBSTRING(NIP, 4, 3) FROM daftar_dosen;
+----------------------+
| SUBSTRING(NIP, 4, 3) |
+----------------------+
| 043                  |
| 043                  |
| 543                  |
| 043                  |
| 643                  |
| 043                  |
| 943                  |
| 043                  |
+----------------------+
8 rows in set (0.00 sec)
  
mysql> SELECT SUBSTRING(NIP, -4) FROM daftar_dosen;
+--------------------+
| SUBSTRING(NIP, -4) |
+--------------------+
| 6012               |
| 2002               |
| 0005               |
| 2066               |
| 1001               |
| 5006               |
| 7003               |
| 2007               |
+--------------------+
8 rows in set (0.00 sec)
  
mysql> SELECT SUBSTRING(NIP, -4, 3) FROM daftar_dosen;
+-----------------------+
| SUBSTRING(NIP, -4, 3) |
+-----------------------+
| 601                   |
| 200                   |
| 000                   |
| 206                   |
| 100                   |
| 500                   |
| 700                   |
| 200                   |
+-----------------------+
8 rows in set (0.00 sec)

Dalam contoh diatas, saya menggunakan 4 kombinasi fungsi SUBSTRING:

  • SELECT SUBSTRING(NIP, 4) FROM daftar_dosen: ambil seluruh karakter pada kolom daftar dosen_mulai dari index (huruf) ke-4 hingga akhir string.
  • SELECT SUBSTRING(NIP, 4, 3) FROM daftar_dosen: ambil seluruh karakter pada kolom daftar_dosen mulai dari index (huruf) ke-4, dan 3 karakter berikutnya.
  • SELECT SUBSTRING(NIP, -4) FROM daftar_dosen: ambil 4 karakter terakhir dari kolom daftar dosen.
  • SELECT SUBSTRING(NIP, -4, 3) FROM daftar_dosen: ambil 4 karakter terakhir dari kolom daftar dosen, kecuali 1 huruf terakhir (4-3 = 1)

Dalam MySQL, fungsi SUBSTRING memiliki 2 alias: SUBSTR dan MID. Dengan kata lain, ketiga fungsi ini berfungsi sama:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
mysql> SELECT SUBSTR(NIP, -4, 3) FROM daftar_dosen;
+--------------------+
| SUBSTR(NIP, -4, 3) |
+--------------------+
| 601                |
| 200                |
| 000                |
| 206                |
| 100                |
| 500                |
| 700                |
| 200                |
+--------------------+
8 rows in set (0.00 sec)
mysql> SELECT MID(NIP, -4, 3) FROM daftar_dosen;
+-----------------+
| MID(NIP, -4, 3) |
+-----------------+
| 601             |
| 200             |
| 000             |
| 206             |
| 100             |
| 500             |
| 700             |
| 200             |
+-----------------+
8 rows in set (0.00 sec)

MySQL menyediakan berbagai nama untuk fungsi yang sama agar sesuai dengan standar bahasa SQL.


Cara Penggunaan Fungsi LEFT dan RIGHT MySQL

Fungsi LEFT dan RIGHT pada dasarnya merupakan bentuk sederhana dari fungsi SUBSTRING. Keduanya membutuhkan 2 argumen yaitu nama kolom tabel dan jumlah huruf yang ingin diambil.

Fungsi LEFT akan mengambil sejumlah karakter mulai dari kiri string, dan fungsi RIGHT akan mulai dari sisi kanan string.

Berikut contoh percobaannya menggunakan kolom NIP dari tabel nama_dosen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
mysql> SELECT NIP FROM daftar_dosen;
+------------+
| NIP        |
+------------+
| 0160436012 |
| 0260432002 |
| 0275430005 |
| 0480432066 |
| 0576431001 |
| 0770435006 |
| 0869437003 |
| 1080432007 |
+------------+
8 rows in set (0.00 sec)
  
mysql> SELECT LEFT(NIP, 5) FROM daftar_dosen;
+--------------+
| LEFT(NIP, 5) |
+--------------+
| 01604        |
| 02604        |
| 02754        |
| 04804        |
| 05764        |
| 07704        |
| 08694        |
| 10804        |
+--------------+
8 rows in set (0.00 sec)
  
mysql> SELECT RIGHT(NIP, 5) FROM daftar_dosen;
+---------------+
| RIGHT(NIP, 5) |
+---------------+
| 36012         |
| 32002         |
| 30005         |
| 32066         |
| 31001         |
| 35006         |
| 37003         |
| 32007         |
+---------------+
8 rows in set (0.00 sec)

Seperti yang terlihat, query SELECT LEFT(NIP, 5) FROM daftar_dosen akan menampilkan 5 karakter pertama dari kolom NIP, sedangkan query SELECT RIGHT(NIP, 5) FROM daftar_dosen akan mengambil 5 karakter terakhir dari kolom NIP.

Yang perlu diingat, fungsi LEFT dan RIGHT tidak mendukung angka negatif seperti fungsi SUBSTRING.


Query ‘pemotongan’ string yang kita pelajari disini cukup penting diketahui, terutama jika kita ingin menggunakan kolom yang terdiri dari kumpulan informasi. Misalkan untuk NIM mahasiswa, biasanya 2 digit pertama adalah tahun lahir, 2 digit berikutnya kode fakultas, dan 4 digit berikutnya no urut mahasiswa. Fungsi SUBSTRING bisa digunakan untuk memecah NIM ini untuk pemrosesan lebih lanjut.