Dalam kebanyakan kasus, menggabungkan string dan angka dalam SQL tidak berbeda dengan menggabungkan dua string.
Sebagian besar DBMS akan menggabungkan string dan nomor seolah-olah keduanya adalah string. Ini karena angka biasanya dikonversi ke string sebelum operasi penggabungan.
Sebagian besar RDBMS utama menyediakan CONCAT()
fungsi untuk operasi penggabungan, serta CONCAT_WS()
fungsi yang memungkinkan Anda menentukan pemisah untuk memisahkan argumen gabungan.
Sebagian besar RDBMS utama juga menyertakan operator penggabungan string, yang memungkinkan kita untuk menggabungkan operan-operannya.
CONCAT()
Fungsi
Sebagian besar RDBMS utama menyediakan CONCAT()
fungsi untuk menggabungkan argumen string. Umumnya, argumen non-string dikonversi ke string sebelum penggabungan terjadi.
Contoh:
SELECT CONCAT('Player', 456);
Hasil:
Player456
Jika kita ingin menyertakan spasi di antara argumen yang digabungkan, kita bisa menambahkan spasi ke salah satu string, atau menyertakan spasi sebagai argumen terpisah:
SELECT
CONCAT('Player ', 456) AS "Option 1",
CONCAT('Player', ' ', 456) AS "Option 2";
Hasil:
+------------+------------+ | Option 1 | Option 2 | +------------+------------+ | Player 456 | Player 456 | +------------+------------+
RDBMS yang memiliki CONCAT()
fungsi termasuk MySQL, MariaDB, SQL Server, Oracle, dan PostgreSQL.
SQLite tidak memiliki CONCAT()
fungsi. SQLite bisa memiliki operator rangkaian string (lihat di bawah).
CONCAT_WS()
Fungsi
Cara lain untuk memasukkan spasi adalah dengan menggunakan CONCAT_WS()
fungsi. Fungsi ini memungkinkan Anda untuk menentukan pemisah yang akan digunakan untuk memisahkan semua argumen yang digabungkan.
Contoh:
SELECT CONCAT_WS(' ', 'Player', 456);
Hasil:
Player 456
Fungsi ini bisa sangat berguna jika Anda memiliki banyak argumen untuk digabungkan:
SELECT CONCAT_WS(', ', 'Red', 2, 'Green', 456, 'Black');
Hasil:
Red, 2, Green, 456, Black
Dalam kasus seperti itu, Anda hanya perlu menentukan pemisah sekali. Dalam contoh ini, saya menetapkan koma dan spasi sebagai pemisah.
RDBMS yang memiliki CONCAT_WS()
fungsi termasuk MySQL, MariaDB, SQL Server, dan PostgreSQL.
SQLite dan Oracle tidak memiliki CONCAT_WS()
berfungsi, tetapi mereka melakukannya memiliki operator rangkaian string (lihat di bawah).
Operator Penggabungan String
Sebagian besar RDBMS menyertakan operator rangkaian string yang menggabungkan operan-operannya.
Jika Anda menggunakan SQLite, ini adalah satu-satunya pilihan Anda.
Contoh:
SELECT 'Player' || 456;
Hasil:
Player456
Perhatikan bahwa di MySQL, Anda harus mengaktifkan operator penyambungan pipa terlebih dahulu.
Hal yang sama berlaku untuk MariaDB.
SQL Server
Contoh di atas tidak akan berfungsi di SQL Server. Di SQL Server, gunakan tanda plus (+
) operator penggabungan string.
Selain itu, nomor tersebut juga perlu diubah menjadi string sebelum mencoba menggabungkan:
SELECT 'Player' + CAST(456 AS varchar(3));
Hasil:
Player456
Inilah yang terjadi jika saya mencoba melakukannya tanpa terlebih dahulu mengubah angka menjadi string:
SELECT 'Player' + 456;
Hasil:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Player' to data type int.
SQL Server berpikir bahwa kami mencoba menambahkan dua angka (karena +
juga merupakan operator penjumlahan) dan karena itu mengembalikan kesalahan, karena salah satu operan adalah string.