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

Bagaimana CAST() Bekerja di MariaDB

Di MariaDB, CAST() adalah fungsi bawaan yang mengubah nilai ke tipe data lain. Dibutuhkan 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.

CAST() bekerja mirip dengan CONVERT() .

Sintaks

Sintaksnya seperti ini:

CAST(expr AS type) 

Dimana expr adalah nilai yang akan dikonversi, dan type adalah tipe data yang Anda inginkan untuk dikonversi.

Contoh

Berikut ini contoh sederhananya:

SELECT CAST(123.45 AS INT); 

Hasil:

+---------------------+| CAST(123,45 SEBAGAI INT) |+---------------------+| 123 |+---------------------+

Ini memberikan nilai ke bilangan bulat, dan oleh karena itu, tempat desimal telah dihapus.

Ini contoh lain:

SELECT CAST('2020-01-01' AS DATETIME); 

Hasil:

+--------------------------------+| CAST('01-01-2020' AS 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 CAST('1 Jan, 2020' AS DATE); 

Hasil:

+-----------------------------+| CAST('1 Jan, 2020' SEBAGAI TANGGAL) |+------------------------------+| NULL |+----------------------------+

Di sini, MariaDB tampaknya 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

Anda dapat menentukan set karakter yang akan digunakan untuk nilai kembalian saat menggunakan CAST() fungsi.

Contoh:

SELECT 
    COLLATION(123) AS "123",
    COLLATION(CAST(123 AS CHAR CHARACTER SET utf16)) AS "utf16",
    COLLATION(CAST(123 AS CHAR CHARACTER SET latin1)) AS "latin1",
    COLLATION(CAST(123 AS CHAR CHARACTER SET big5)) AS "big5"; 

Hasil:

+--------+------------------+------------------ -+-----------------+| 123 | utf16 | latin1 | big5 |+--------+------------------+------------------- +-----------------+| biner | utf16_general_ci | latin1_swedish_ci | big5_chinese_ci |+--------+------------------+------------------- +-----------------+

Di sini, kami menggunakan COLLATION() berfungsi untuk mengembalikan susunan setiap nilai setelah dilemparkan ke tipe data baru. Setiap nilai menggunakan susunan default untuk kumpulan karakter yang ditentukan.

Nilai awal bukan string, jadi COLLATION() mengembalikan biner.

Mengonversi ke CHAR tanpa menentukan set karakter akan menghasilkan collation_connection kumpulan karakter yang digunakan.

Tentukan Collation

Anda juga dapat menentukan susunan.

Contoh:

SELECT 
    COLLATION(123) AS "123",
    COLLATION(CAST(123 AS CHAR CHARACTER SET utf16) COLLATE utf16_icelandic_ci) AS "utf16",
    COLLATION(CAST(123 AS CHAR CHARACTER SET latin1) COLLATE latin1_german2_ci) AS "latin1",
    COLLATION(CAST(123 AS CHAR CHARACTER SET big5) COLLATE big5_chinese_nopad_ci) AS "big5"; 

Hasil:

+--------+--------------------+---------------- ---+-----------------------+| 123 | utf16 | latin1 | big5 |+--------+--------------------+----------------- --+-----------------------+| biner | utf16_icelandic_ci | latin1_german2_ci | big5_chinese_nopad_ci |+--------+--------------------+----------------- --+------------------------+

Dalam hal ini, kami secara eksplisit menentukan susunan yang akan digunakan yang bukan susunan default untuk kumpulan karakter yang ditentukan (walaupun masih merupakan susunan yang valid untuk kumpulan karakter).

Menentukan susunan yang tidak valid untuk kumpulan karakter akan menghasilkan kesalahan.

Inilah yang terjadi ketika saya mengganti dua susunan pertama:

SELECT 
    COLLATION(123) AS "123",
    COLLATION(CAST(123 AS CHAR CHARACTER SET utf16) COLLATE latin1_german2_ci) AS "utf16",
    COLLATION(CAST(123 AS CHAR CHARACTER SET latin1) COLLATE utf16_icelandic_ci) AS "latin1",
    COLLATION(CAST(123 AS CHAR CHARACTER SET big5) COLLATE big5_chinese_nopad_ci) AS "big5"; 

Hasil:

ERROR 1253 (42000):COLLATION 'latin1_german2_ci' tidak valid untuk CHARACTER SET 'utf16'

Itu sampai ke yang pertama dan menimbulkan kesalahan, karena latin1_german2_ci bukan susunan yang valid untuk utf16 kumpulan karakter.

Lihat daftar susunan yang tersedia di MariaDB untuk daftar lengkap susunan dan set karakter yang cocok.

Argumen Null

Mencoba mengonversi null mengembalikan null :

SELECT CAST(null AS DATETIME); 

Hasil:

+------------------------+| CAST(null AS DATETIME) |+-----------------------+| NULL |+-----------------------+

Namun, melewati null tanpa menentukan tipe data baru akan menghasilkan kesalahan:

SELECT CAST(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 CAST() tanpa meneruskan argumen menghasilkan kesalahan:

SELECT CAST(); 

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. Cara Menginstal dan Mengamankan MariaDB di CentOS 7

  2. Cara Melakukan Operasi Failback untuk Pengaturan Replikasi MySQL

  3. Pemantauan Replikasi MySQL yang Efektif Dengan Dasbor SCUMM:Bagian 2

  4. Menginstal MariaDB 10.1 di Debian Jessie dan Menjalankan Berbagai Kueri MariaDB

  5. Bagaimana GET_FORMAT() Bekerja di MariaDB