Dalam tutorial belajar MySQL di Duniailkom kali ini akan membahas tentang cara menyambung string / menggabungkan string menggunakan fungsi CONCAT() dan CONCAT_WS() dari MySQL.
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.
Terima kasih sangat membantu, saya mencari cara untuk update tanggal an waktu paling terbaru dengan cara sort descending yang pertama hanya tanggal saja yg bisa update tp dengan concat jd bisa gabung 2 variabel
Pak misalkan mau buat fungsi yang nge cut gimana pak contohnnya:
Input duniailkom1 nanti outputnya nya 1 gitu,terus duniailkom2 outputnya 2 gimana ya pak???
Untuk memproses data, sebaiknya di lakukan di bahasa pemrograman, bukan dari MySQL langsung. MySQL hanya cocok untuk menyimpan data saja. Misalnya jika menggunakan web programming, bahasa pemrogramannya biasanya pakai PHP. Jadi pemotongan string itu dilakukan di PHP.
Di PHP terdapat fungsi substr() untuk memotong string: https://www.duniailkom.com/tutorial-php-cara-memotong-atau-mengambil-sebagian-string-fungsi-substr
mungkin bisa pake fungsi string? yang seperti RTRIM
om mohon bimbingannya nih. kalo menggunakan metode concot dari kode/id apa bisa. Contohnya id/kode dari satu tabel ini terbuat dari gabungan beberapa kode/id yang berbeda tabel? Terimakasih sebelumnya
Yup bisa, tapi querynya memang akan jadi kompleks (pakai sub query), ada query SELECT di dalam query SELECT.
om mohon bimbingannya nih. semisal saya ingin menggabungkan dua kolom dari tapi beda table.
contoh: menggunakan tabel (mata_kuliah, dosen), misalkan saya ingin menyambung (kolom nama_metkul dengan nama_dosen) tapi berdasarkan NIP_dosen di tabel mata_kuliah.
saya tidak pakai CONCAT_WS hanya CONCAT bisa pakai spasi contoh:
SELECT CONCAT (kode_matkul,' ', nama_matkul) from mata_kuliah;
Jadi sebenernya bisa pake CONCAT aja ya mas Andre.
Trims
Siip, terimakasih tambahannya :)
Halo saya mau tanya fungsi concate ini me ngupdate isi fieldny gak ya, apa hanya sekadar tampilan. Misal saya punya tabel pembeli, didalamny ad field Alamat, Kelurahan, Kecamatan. Nah saya ingin menggabungkan alamat dan kelurahan dalam satu field (kolom). ap bisa pakai concate? jadi nanti ketika saya select alamat from pembeli sudah ad kelurahannya.
Tidak, hanya untuk tampilan saja. Jika ingin yang seperti itu bisa memanfaatkan fitur "view" di MySQL, yakni membuat semacam temporary table.
Query untuk menggabungkan kata contoh saya tidak sepakat menjadi saya tidaksepakat itu gimana ya mas?
mas kalau query untuk memisahkan text gimana ya mas mohon arahannya, contoh PO123456 – DO654321 saya mau memisahkan menjadi PO123456 saja atau DO654321 saja terimakasi