Di MariaDB, CONVERT()
adalah fungsi bawaan yang mengubah nilai ke tipe data lain. Ini mengambil nilai dari satu jenis dan mengembalikan nilai dari jenis yang ditentukan.
Anda memberikan nilai sebagai argumen saat Anda memanggil fungsi, serta jenis yang Anda inginkan untuk dikonversi.
CONVERT()
mirip dengan CAST()
.
Sintaks
CONVERT()
fungsi dapat dipanggil menggunakan sintaks ODBC atau sintaks SQL92.
Sintaks ODBC:
CONVERT(expr, type)
Sintaks SQL92:
CONVERT(expr USING charset)
Dimana expr
adalah nilai yang akan dikonversi, type
adalah tipe data yang Anda inginkan untuk dikonversi.
Menggunakan sintaks SQL92, charset
adalah set karakter yang Anda inginkan untuk dikonversi.
Contoh
Berikut ini contoh sederhananya:
SELECT CONVERT(123.45, INT);
Hasil:
+----------------------+| CONVERT(123,45, INT) |+-----------------------+| 123 |+----------------------+
Ini mengonversi nilai menjadi bilangan bulat, yang menghilangkan tempat desimal.
Ini contoh lain:
SELECT CONVERT('2020-01-01', DATETIME);
Hasil:
+----------------------------------+| CONVERT('01-01-2020', DATETIME) |+---------------------------------+| 01-01-2020 00:00:00 |+----------------------------------+
Dalam hal ini, kami mengonversi string menjadi DATETIME
tipe data.
Kegagalan Konversi
Pada contoh sebelumnya, kami menyediakan DATE
. yang valid string (atau DATE
harfiah). Oleh karena itu MariaDB dapat mengonversi nilai menjadi DATETIME
tipe data.
Namun, inilah yang terjadi jika kami memberikan DATE
yang tidak valid string:
SELECT CONVERT('1 Jan, 2020', DATE);
Hasil:
+-----------------------------+| CONVERT('1 Jan, 2020', TANGGAL) |+------------------------------+| NULL |+----------------------------+
Di sini, MariaDB tidak tahu cara mengonversi nilai ini dan mengembalikan NULL
.
Dalam hal ini, kita bisa menggunakan fungsi lain, seperti STR_TO_DATE()
untuk melakukan konversi seperti itu:
SELECT STR_TO_DATE('1 Jan, 2020', '%e %M, %Y');
Hasil:
+-----------------------------------------+| STR_TO_DATE('1 Jan, 2020', '%e %M, %Y') |+----------------------------- ------------+| 01-01-2020 |+---------------------------------+Tentukan Kumpulan Karakter
Sintaks SQL92 memungkinkan kita untuk menentukan set karakter yang akan dikonversi.
Contoh:
SELECT CONVERT('ไม้เมือง' USING tis620);
Hasil:
+------------------------------------------------- ----+| CONVERT('ไม้เมือง' MENGGUNAKAN tis620) |+--------------------------------------- -----------+| |+------------------------------------------------------- ----+Mengubah kumpulan karakter juga akan mengubah susunan menjadi susunan default untuk kumpulan karakter itu.
Contoh di atas tidak benar-benar menunjukkan bagaimana set karakter/kolasi telah berubah.
Untungnya kita bisa menggunakan fungsi seperti
CHARSET()
danCOLLATION()
untuk melihat bagaimana set karakter dan susunan telah berubah:SELECT CHARSET('ไม้เมือง') AS a, COLLATION('ไม้เมือง') AS b, CHARSET(CONVERT('ไม้เมือง' USING tis620)) AS c, COLLATION(CONVERT('ไม้เมือง' USING tis620)) AS d;
Hasil:
+------+-------+--------+------------ ----+| sebuah | b | c | d |+------+-----------------+--------+------------- ---+| utf8 | utf8_general_ci | tis620 | tis620_thai_ci |+------+-------+--------+------------- ---+Yang pertama menggunakan set karakter dan susunan untuk koneksi saya. Yang kedua menggunakan set karakter yang secara eksplisit kami tentukan dengan
CONVERT()
, serta susunan default untuk kumpulan karakter tersebut.Lihat daftar susunan yang tersedia di MariaDB untuk daftar lengkap susunan dan set karakter yang cocok.
Argumen Null
Mencoba mengonversi
null
mengembalikannull
:SELECT CONVERT(null, DATETIME);
Hasil:
+-------------------------+| CONVERT(null, DATETIME) |+--------------+| NULL |+------------------------+Namun, melewati
null
tanpa menentukan tipe data baru menghasilkan kesalahan sintaks:SELECT CONVERT(null);
Hasil:
ERROR 1064 (42000):Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MariaDB Anda untuk sintaks yang tepat untuk digunakan di dekat ')' di baris 1Argumen Tidak Ada
Memanggil
CONVERT()
tanpa meneruskan argumen menghasilkan kesalahan sintaks:SELECT CONVERT();
Hasil:
ERROR 1064 (42000):Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MariaDB Anda untuk sintaks yang tepat untuk digunakan di dekat ')' di baris 1