MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana CONVERT() Bekerja di MariaDB

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() dan COLLATION() 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 mengembalikan null :

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 1

Argumen 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Makan makanan anjing kita sendiri – Menjalankan JIRA di MariaDB

  2. Daftar Lengkap Kumpulan Karakter yang Didukung oleh MariaDB

  3. MariaDB JSON_ARRAY_APPEND() Dijelaskan

  4. Menangani Masalah Replikasi dari Cluster Database MariaDB non-GTID ke GTID

  5. MariaDB JSON_ARRAY_INSERT() Dijelaskan