Tutorial Belajar MySQL: Cara Menyambung String di dalam Query MySQL (CONCAT)

Dalam tutorial belajar MySQL di Duniailkom kali ini akan membahas tentang cara menyambung string / menggabungkan string menggunakan fungsi CONCAT() dan CONCAT_WS() dari MySQL.

Tutorial ini menggunakan database mahasiswa yang dibuat pada tutorial Cara Menjalankan Query MySQL dari File Teks.

Mengenal Cara Penggunaan Fungsi CONCAT() MySQL

MySQL memiliki fungsi bawaan yang bisa digunakan untuk menyambung string atau menggabungkan string hasil query, yakni melalui fungsi CONCAT() (singkatan dari concatenating).

Menggunakan tabel mata_kuliah, misalkan saya ingin menyambung kolom kode_matkul dengan nama_matkul, berikut query yang bisa digunakan:

mysql> SELECT * FROM mata_kuliah;
+-------------+-------------------+------------+----------+------------+
| kode_matkul | nama_matkul       | jumlah_SKS | semester | NIP_dosen  |
+-------------+-------------------+------------+----------+------------+
| DTBASE      | Database          |          4 |        4 | 0275430005 |
| FISDAS      | Fisika Dasar      |          2 |        1 | 0480432066 |
| JARKOM      | Jaringan Komputer |          3 |        3 | 0770435006 |
| MATDAS      | Matematika Dasar  |          4 |        1 | 0160436012 |
| MIKROP      | Mikro Prosesor    |          2 |        5 | 0480432066 |
| SISOPR      | Sistem Operasi    |          2 |        4 | 0160436012 |
| TEKKOM      | Teknik Kompilasi  |          2 |        6 | 0480432066 |
+-------------+-------------------+------------+----------+------------+
7 rows in set (0.00 sec)
 
mysql> SELECT CONCAT(kode_matkul, nama_matkul) FROM mata_kuliah;
+----------------------------------+
| CONCAT(kode_matkul, nama_matkul) |
+----------------------------------+
| DTBASEDatabase                   |
| FISDASFisika Dasar               |
| JARKOMJaringan Komputer          |
| MATDASMatematika Dasar           |
| MIKROPMikro Prosesor             |
| SISOPRSistem Operasi             |
| TEKKOMTeknik Kompilasi           |
+----------------------------------+
7 rows in set (0.00 sec)

Query pertama digunakan untuk menampilkan seluruh kolom dari tabel mata_kuliah, dan di dalam query kedualah fungsi CONCAT() digunakan.

Bagaimana jika menggabungkan 3 atau 4 sekaligus? Kita tinggal menambahkan nama setiap kolom ke dalam fungsi CONCAT(), dan dipisahkan dengan karakter koma:

mysql> SELECT CONCAT(kode_matkul, nama_matkul, NIP_dosen) FROM mata_kuliah;
+---------------------------------------------+
| CONCAT(kode_matkul, nama_matkul, NIP_dosen) |
+---------------------------------------------+
| DTBASEDatabase0275430005                    |
| FISDASFisika Dasar0480432066                |
| JARKOMJaringan Komputer0770435006           |
| MATDASMatematika Dasar0160436012            |
| MIKROPMikro Prosesor0480432066              |
| SISOPRSistem Operasi0160436012              |
| TEKKOMTeknik Kompilasi0480432066            |
+---------------------------------------------+
7 rows in set (0.00 sec)

Agar nama tabel lebih rapi, kita bisa mengubah nama kolom hasil query menggunakan AS (alias):

mysql> SELECT CONCAT(kode_matkul, nama_matkul, NIP_dosen) AS 'Mata Kuliah 
dan NIP Dosen' FROM mata_kuliah;
+-----------------------------------+
| Mata Kuliah dan NIP Dosen         |
+-----------------------------------+
| DTBASEDatabase0275430005          |
| FISDASFisika Dasar0480432066      |
| JARKOMJaringan Komputer0770435006 |
| MATDASMatematika Dasar0160436012  |
| MIKROPMikro Prosesor0480432066    |
| SISOPRSistem Operasi0160436012    |
| TEKKOMTeknik Kompilasi0480432066  |
+-----------------------------------+
7 rows in set (0.00 sec)

Sekarang, judul kolom tabel terlihat lebih cantik.

Fungsi CONCAT() ini bisa digunakan untuk menyambung string hasil query MySQL, namun seperti yang anda lihat, fungsi ini menyambung seluruh string tanpa ada 'spasi'. Jika kita ingin menambahkan sedikit jarak antara string ini, bisa menggunakan fungsi CONCAT_WS()


Mengenal Cara Penggunaan Fungsi CONCAT_WS MySQL

Fungsi CONCAT_WS() adalah variasi lain dai fungsi CONCAT(), perbedaannya dengan menggunakan fungsi CONCAT_WS(), kita bisa menambahkan karakter pembatas antara kolom yang akan digabung. Tambahan singkatan WS disini berarti 'With Separator'.

Cara penggunaan fungsi CONCAT_WS() hampir sama dengan fungsi CONCAT(), perbedaannya terletak di argumen pertama fungsi CONCAT_WS() yang meminta inputan karakter pembatas.

Sebagai contoh, untuk menggabungkan kolom kode_matkul dengan nama_matkul yang dipisahkan dengan sebuah spasi, saya bisa menggunakan query berikut ini:

mysql> SELECT CONCAT_WS(' ',kode_matkul, nama_matkul) FROM mata_kuliah;
+-----------------------------------------+
| CONCAT_WS(' ',kode_matkul, nama_matkul) |
+-----------------------------------------+
| DTBASE Database                         |
| FISDAS Fisika Dasar                     |
| JARKOM Jaringan Komputer                |
| MATDAS Matematika Dasar                 |
| MIKROP Mikro Prosesor                   |
| SISOPR Sistem Operasi                   |
| TEKKOM Teknik Kompilasi                 |
+-----------------------------------------+
7 rows in set (0.00 sec)

Perhatikan cara penulisan CONCAT_WS(' ',kode_matkul, nama_matkul). Argumen pertama fungsi ini adalah sebuah karakter spasi yang diapit dalam tanda kutip. Kita tinggal menggantinya dengan karakter lain jika dibutuhkan, seperti contoh berikut:

mysql> SELECT CONCAT_WS(', nama mata kuliah: ',kode_matkul, nama_matkul) 
FROM mata_kuliah;
+------------------------------------------------------------+
| CONCAT_WS(', nama mata kuliah: ',kode_matkul, nama_matkul) |
+------------------------------------------------------------+
| DTBASE, nama mata kuliah: Database                         |
| FISDAS, nama mata kuliah: Fisika Dasar                     |
| JARKOM, nama mata kuliah: Jaringan Komputer                |
| MATDAS, nama mata kuliah: Matematika Dasar                 |
| MIKROP, nama mata kuliah: Mikro Prosesor                   |
| SISOPR, nama mata kuliah: Sistem Operasi                   |
| TEKKOM, nama mata kuliah: Teknik Kompilasi                 |
+------------------------------------------------------------+
7 rows in set (0.00 sec)

Kali ini saya menggunakan fungsi CONCAT_WS(', nama mata kuliah: ',kode_matkul, nama_matkul) untuk menghasilkan kolom baru. Dengan penambahan query AS, judul kolom akan lebih rapi:

mysql> SELECT CONCAT_WS(', nama mata kuliah: ',kode_matkul, nama_matkul) 
AS 'Mata Kuliah' FROM mata_kuliah;
+---------------------------------------------+
| Mata Kuliah                                 |
+---------------------------------------------+
| DTBASE, nama mata kuliah: Database          |
| FISDAS, nama mata kuliah: Fisika Dasar      |
| JARKOM, nama mata kuliah: Jaringan Komputer |
| MATDAS, nama mata kuliah: Matematika Dasar  |
| MIKROP, nama mata kuliah: Mikro Prosesor    |
| SISOPR, nama mata kuliah: Sistem Operasi    |
| TEKKOM, nama mata kuliah: Teknik Kompilasi  |
+---------------------------------------------+
7 rows in set (0.00 sec)

Perlu juga ditambahkan bahwa fungsi CONCAT_WS() akan menambahkan karakter pembatas untuk setiap penyambungan kolom, seperti contoh berikut:

mysql> SELECT CONCAT_WS(' > ',kode_matkul, nama_matkul, jumlah_SKS, 
semester) AS 'Mata Kuliah' FROM mata_kuliah;
+------------------------------------+
| Mata Kuliah                        |
+------------------------------------+
| DTBASE > Database > 4 > 4          |
| FISDAS > Fisika Dasar > 2 > 1      |
| JARKOM > Jaringan Komputer > 3 > 3 |
| MATDAS > Matematika Dasar > 4 > 1  |
| MIKROP > Mikro Prosesor > 2 > 5    |
| SISOPR > Sistem Operasi > 2 > 4    |
| TEKKOM > Teknik Kompilasi > 2 > 6  |
+------------------------------------+
7 rows in set (0.00 sec)

Query diatas digunakan untuk menyambung 4 kolom sekaligus yang dibatasi dengan karakter ' > '.


Fungsi CONCAT() dan CONCAT_WS() yang kita pelajari disini sangat praktis digunakan untuk menggabungkan beberapa kolom hasil query SELECT dalam MySQL.

13 Comments

  1. Arifin Budi P
    01 Dec 15
  2. athaya abi
    15 Jan 17
  3. Ardian
    27 Feb 18
    • Andre
      27 Feb 18
  4. Syamsul Arifin
    25 Apr 18
  5. Aono
    26 Aug 18
    • Andre
      26 Aug 18
  6. Fandy
    14 Nov 18
    • Andre
      14 Nov 18
  7. Mita
    19 May 20
  8. Engky
    09 Mar 21

Add Comment

Leave a Reply to Arifin Budi P Cancel reply