Di MariaDB, CONCAT_WS()
adalah fungsi string bawaan yang merupakan singkatan dari Concatenate With Separator.
CONCAT_WS()
melakukan rangkaian string pada argumennya, dengan argumen pertama menjadi pemisah untuk argumen yang tersisa.
Concatenation adalah operasi menggabungkan dua atau lebih string end-to-end.
CONCAT_WS()
menerima dua argumen atau lebih (walaupun hanya memberikan dua argumen tidak akan menghasilkan apa pun yang digabungkan, karena argumen pertama menjadi pemisah, dan argumen kedua adalah string tunggal yang akan digabungkan dengan… tidak ada yang lain).
Sintaks
Sintaksnya seperti ini:
CONCAT_WS(separator,str1,str2,...)
Dimana separator
adalah string yang akan digunakan sebagai pemisah, dan str1, str2, …
mewakili argumen string yang akan digabungkan.
Contoh
Berikut ini contoh dasarnya:
SELECT CONCAT_WS( ', ', 'Milk', 'Cheese', 'Bread');
Hasil:
+------------------------------------------------+ | CONCAT_WS( ', ', 'Susu', 'Keju', 'Roti') |+------------------------------ ---------------+| Susu, Keju, Roti |+------------------------------------------------------ --+
Dalam hal ini, kami menggabungkan tiga string menggunakan koma dan spasi sebagai pemisah.
Ini satu lagi yang menggunakan pemisah yang berbeda:
SELECT CONCAT_WS('-', 'Blue', 'Red', 'Green');
Hasil:
+---------------------------------------+| CONCAT_WS('-', 'Biru', 'Merah', 'Hijau') |+------------------------------ ----------+| Biru-Merah-Hijau |+-----------------------------------------+
CONCAT_WS()
mirip denganCONCAT()
fungsi. Salah satu manfaatCONCAT_WS()
melaluiCONCAT()
menjadi jelas ketika menggabungkan banyak string.Untuk melakukan contoh sebelumnya dengan
CONCAT()
, kita perlu mengulang pemisah di antara setiap string.Seperti ini:
SELECT CONCAT('Blue', '-', 'Red', '-', 'Green');
Hasil:
+------------------------------------------+| CONCAT('Biru', '-', 'Merah', '-', 'Hijau') |+-------------------------- ----------------+| Biru-Merah-Hijau |+------------------------------------------+Ini bisa menjadi berat jika kita memiliki banyak string untuk digabungkan.
Tanpa Pemisah
Menyediakan string kosong saat pemisah menggabungkan string tanpa pemisah:
SELECT CONCAT_WS('', 'Blue', 'Red', 'Green');
Hasil:
+---------------------------------------+| CONCAT_WS('', 'Biru', 'Merah', 'Hijau') |+------------------------------- --------+| BiruMerahHijau |+---------------------------------------+Dalam hal ini kita mendapatkan hasil yang sama dengan yang kita dapatkan saat menggunakan
CONCAT()
untuk menggabungkan ketiga string tersebut.Penting untuk menyediakan pemisah, meskipun itu kosong. Gagal menyediakan pemisah akan mengakibatkan string rangkaian pertama digunakan sebagai pemisah, yang mungkin bukan yang Anda inginkan.
Contoh:
SELECT CONCAT_WS('Blue', 'Red', 'Green', 'Orange');
Hasil:
+------------------------------------------------+ | CONCAT_WS('Biru', 'Merah', 'Hijau', 'Oranye') |+----------------------------------------- ---------------+| MerahBiruHijauBiru Oranye |+--------------------------------------------------------+Dalam hal ini,
Blue
adalah argumen pertama, dan akhirnya digunakan sebagai pemisah.Menggabungkan Argumen Null
Manfaat lain yang
CONCAT_WS()
memiliki lebih dariCONCAT()
apakah itunull
-aman.Jika salah satu argumen yang akan digabungkan adalah
null
,CONCAT_WS()
mengabaikan mereka.CONCAT()
fungsi di sisi lain, mengembalikannull
(kecuali dalam mode Oracle, dalam hal ini mengabaikannull
argumen).Mari kita panggil
CONCAT_WS()
dengannull
argumen:SELECT CONCAT_WS('-', 'Blue', NULL, 'Green');
Hasil:
+---------------------------------------+| CONCAT_WS('-', 'Biru', NULL, 'Hijau') |+-------------------------------- -------+| Biru-Hijau |+----------------------------+Seperti yang diharapkan,
CONCAT_WS()
melewatkan argumen nol, dan menggabungkan argumen yang tersisa.Artinya, jika kita memberikan string kosong sebagai pemisah, kita dapat menggunakan
CONCAT_WS()
sebagainull
-versi aman dariCONCAT()
:SELECT CONCAT_WS('', 'Blue', NULL, 'Green');
Hasil:
+--------------------------------------+| CONCAT_WS('', 'Biru', NULL, 'Hijau') |+--------------------------------- -----+| BiruHijau |+--------------------------------------+Pemisah Null
Memberikan
null
pemisah adalah cerita yang berbeda. Melakukan ini mengembalikannull
.SELECT CONCAT_WS(NULL, 'Blue', 'Red', 'Green');
Hasil:
+-----------------------------------------+| CONCAT_WS(NULL, 'Biru', 'Merah', 'Hijau') |+-------------------------------- ---------+| NULL |+--------------------------------------------------+String Biner
Jika salah satu argumen adalah string biner, hasilnya adalah string biner:
SELECT CONCAT_WS(', ', BINARY 'Apple', 'Orange');
Hasil:
+-------------------------------------------+| CONCAT_WS(', ', BINARY 'Apple', 'Oranye') |+--------------------------------- ----------+| Apel, Jeruk |+--------------------------------------------------+Kita dapat menggunakan
COLLATION()
fungsi untuk memeriksa susunan hasil:SELECT COLLATION(CONCAT_WS(', ', BINARY 'Apple', 'Orange'));
Hasil:
+------------------------------------------------- --------+| COLLATION(CONCAT_WS(', ', BINARY 'Apple', 'Oranye')) |+------------------------------ ------------------------+| biner |+----------------------------------------------- -------+Jika kita menghapus
BINARY
operator, kami mendapatkan hasil yang berbeda:SELECT COLLATION(CONCAT_WS(', ', 'Apple', 'Orange'));
Hasil:
+------------------------------------------------- -+| COLLATION(CONCAT_WS(', ', 'Apple', 'Oranye')) |+------------------------------- ----------------+| utf8_general_ci |+---------------------------------------------------------- +Argumen Tunggal
Memanggil
CONCAT_WS()
dengan hanya satu argumen mengembalikan kesalahan:SELECT CONCAT_WS('Blue');
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'CONCAT_WS'Argumen Tidak Ada
Memanggil
CONCAT_WS()
tanpa memberikan argumen apa pun menghasilkan kesalahan:SELECT CONCAT_WS();
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'CONCAT_WS'