全部产品
Search
文档中心

AnalyticDB:Fungsi CAST

更新时间:Jun 26, 2025

AnalyticDB for MySQL memungkinkan penggunaan fungsi CAST untuk mengonversi nilai dari satu tipe data ke tipe data lainnya. Topik ini menjelaskan cara menggunakan fungsi CAST.

Sintaksis

CAST (expr AS type)

Parameter:

  • expr: Data sumber. Parameter ini wajib diisi.

  • type: Tipe data tujuan. Parameter ini wajib diisi.

CAST AS BOOLEAN

CAST (expr AS BOOLEAN)

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi tipe BOOLEAN.

Tipe data sumber

  • DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, atau TINYINT

  • BIGINT

  • DOUBLE

  • VARCHAR

  • JSON

Aturan konversi

Tipe data sumber

Tipe data tujuan

Aturan konversi

  • VARCHAR

  • JSON

BOOLAEN

  • Jika nilai sumber adalah true atau 1, nilai 1 dikembalikan.

  • Jika nilai sumber adalah false atau 0, nilai 0 dikembalikan.

  • Jika nilai sumber adalah tipe data lain, NULL dikembalikan.

DOUBLE

BOOLAEN

  • Jika nilai sumber adalah angka selain 0.0, nilai 1 dikembalikan.

  • Jika nilai sumber adalah 0.0, nilai 0 dikembalikan.

  • DECIMAL(m,d)

  • FLOAT

  • INT/INTEGER

  • SMALLINT

  • TINYINT

  • BIGINT

BOOLAEN

  • Jika nilai sumber adalah angka selain 0, nilai 1 dikembalikan.

  • Jika nilai sumber adalah 0, nilai 0 dikembalikan.

Contoh

Contoh 1

Eksekusi pernyataan berikut untuk mengonversi nilai 1 dari tipe INT ke tipe BOOLEAN:

SELECT CAST('1' AS BOOLEAN);

Hasil berikut dikembalikan:

+----------------------+
| CAST('1' AS BOOLEAN) |
+----------------------+
|                    1 |
+----------------------+

Contoh 2

Eksekusi pernyataan berikut untuk mengonversi nilai a dari tipe VARCHAR ke tipe BOOLEAN:

SELECT CAST('a' AS BOOLEAN);

Hasil berikut dikembalikan:

NULL

Contoh 3

Eksekusi pernyataan berikut untuk mengonversi nilai 4.3 dari tipe DOUBLE ke tipe BOOLEAN:

SELECT CAST(4.3 AS BOOLEAN);

Hasil berikut dikembalikan:

+----------------------+
| CAST(4.3 AS BOOLEAN) |
+----------------------+
|                    1 |
+----------------------+

Contoh 4

Eksekusi pernyataan berikut untuk mengonversi nilai 5 dari tipe INT ke tipe BOOLEAN:

SELECT CAST(5 AS BOOLEAN);

Hasil berikut dikembalikan:

+--------------------+
| CAST(5 AS BOOLEAN) |
+--------------------+
|                  1 |
+--------------------+

CAST AS DECIMAL(m,d)|FLOAT|INT|INTEGER|SMALLINT|TINYINT

CAST (expr AS [DECIMAL(m,d)|FLOAT|INT|INTEGER|SMALLINT|TINYINT])

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi tipe DECIMAL(M,D), FLOAT, INT, INTEGER, SMALLINT, atau TINYINT.

Tipe data sumber

  • DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, atau TINYINT

  • BIGINT

  • DOUBLE

  • VARCHAR

  • JSON

Aturan konversi

  • Jika nilai yang ditentukan oleh expr tidak dalam rentang nilai yang diizinkan dari tipe data tujuan, null akan dikembalikan selama konversi.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai 99999999 dari tipe BIGINT ke tipe SMALLINT:

    SELECT CAST(99999999 as SMALLINT);

    NULL dikembalikan karena 99999999 tidak dalam rentang nilai yang diizinkan dari tipe SMALLINT.

    NULL
  • Jika Anda mengonversi nilai dari tipe data presisi tinggi ke tipe data presisi rendah, nilai tersebut akan dibulatkan setelah konversi.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai 1.23456789 dari tipe DOUBLE ke tipe FLOAT:

    SELECT CAST(1.23456789 AS FLOAT);

    Hasil berikut dikembalikan:

    +---------------------------+
    | CAST(1.23456789 AS FLOAT) |
    +---------------------------+
    |                 1.2345679 |
    +---------------------------+
  • Jika Anda mengonversi nilai dari tipe DECIMAL(M,D), DOUBLE, atau FLOAT ke tipe INT/INTEGER, SMALLINT, atau TINYINT, nilai dibulatkan setelah konversi.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai 1.1342 dari tipe FLOAT ke tipe INT:

    SELECT CAST(1.1342 AS INT);

    Hasil berikut dikembalikan:

    +---------------------+
    | CAST(1.1342 AS INT) |
    +---------------------+
    |                   1 |
    +---------------------+
  • Jika nilai yang ditentukan oleh expr adalah tipe VARCHAR dan bukan angka, NULL dikembalikan ketika nilai dikonversi ke tipe DECIMAL(M,D) atau FLOAT.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai China dari tipe VARCHAR ke tipe DECIMAL(M,D):

    SELECT cast( 'China' AS decimal(5,2));

    Hasil berikut dikembalikan:

    NULL
  • Jika nilai yang ditentukan oleh expr adalah tipe VARCHAR dan bukan angka, nilai 0 dikembalikan setelah nilai dikonversi ke tipe INT/INTEGER, SMALLINT, atau TINYINT.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai China dari tipe VARCHAR ke tipe SMALLINT:

    SELECT CAST( 'China' AS SMALLINT);

    Hasil berikut dikembalikan:

    +----------------------------+
    | CAST( 'China' AS SMALLINT) |
    +----------------------------+
    |                          0 |
    +----------------------------+
  • Jika nilai yang ditentukan oleh expr adalah tipe JSON dan bukan angka, kesalahan dikembalikan ketika nilai dikonversi ke tipe INT/INTEGER, SMALLINT, atau TINYINT.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai [1,2,3] dari tipe VARCHAR ke tipe JSON, lalu ke tipe SMALLINT:

    SELECT CAST(CAST('[1,2,3]' AS JSON) AS SMALLINT);

    Pesan kesalahan berikut dikembalikan:

    ERROR 1815 (HY000): [20034, 2021091814103119216818804803453190138] : Cannot cast json to smallint

Contoh

Eksekusi pernyataan berikut untuk mengonversi nilai 2001012 dari tipe BIGINT ke tipe FLOAT:

SELECT CAST(2001012 AS FLOAT);

Hasil berikut dikembalikan:

+-------------------------+
| CAST(2001012 AS FLOAT)  |
+-------------------------+
|               2001012.0 |
+-------------------------+

CAST AS BIGINT

CAST (expr AS BIGINT)

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi tipe BIGINT.

Tipe data sumber

  • BOOLEAN

  • DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, atau TINYINT

  • DOUBLE

  • DATE, DATETIME, TIMESTAMP, atau TIME

  • VARCHAR

Aturan konversi

  • Jika nilai VARCHAR sumber bukan angka, nilai 0 dikembalikan setelah nilai sumber dikonversi ke tipe BIGINT.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai a dari tipe VARCHAR ke tipe BIGINT:

    SELECT CAST('a' AS BIGINT);

    Hasil berikut dikembalikan:

    +---------------------+
    | CAST('a' AS BIGINT) |
    +---------------------+
    |                   0 |
    +---------------------+
  • Jika Anda mengonversi nilai dari tipe FLOAT, DOUBLE, atau DECIMAL(M,D) ke tipe BIGINT, data dibulatkan setelah konversi.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai 1.23456789 dari tipe DOUBLE ke tipe BIGINT:

    SELECT CAST(1.23456789 AS BIGINT);

    Hasil berikut dikembalikan:

    +----------------------------+
    | CAST(1.23456789 AS BIGINT) |
    +----------------------------+
    |                          1 |
    +----------------------------+
  • Jika nilai JSON sumber bukan angka, NULL dikembalikan ketika nilai sumber dikonversi ke tipe BIGINT.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai {} dari tipe JSON ke tipe BIGINT:

    SELECT CAST(JSON'{}'AS BIGINT);

    Hasil berikut dikembalikan:

    NULL

Contoh

  • Eksekusi pernyataan berikut untuk mengonversi nilai 2021-09-18 dari tipe DATE ke tipe BIGINT:

    SELECT CAST(DATE '2021-09-18' AS BIGINT);

    Hasil berikut dikembalikan:

    +-----------------------------------+
    | CAST(DATE '2021-09-18' AS BIGINT) |
    +-----------------------------------+
    |                          20210918 |
    +-----------------------------------+
  • Eksekusi pernyataan berikut untuk mengonversi nilai -1 dari tipe JSON ke tipe BIGINT:

    SELECT CAST(JSON '-1' AS BIGINT);

    Hasil berikut dikembalikan:

    +---------------------------+
    | CAST(JSON '-1' AS BIGINT) |
    +---------------------------+
    |                        -1 |
    +---------------------------+
  • Eksekusi pernyataan berikut untuk mengonversi nilai FLOOR(4/5) dari tipe DOUBLE ke tipe BIGINT:

    SELECT CAST(FLOOR(4/5) as BIGINT);

    Hasil berikut dikembalikan:

    +---------------------------+
    |CAST(FLOOR(4/5) as BIGINT) |
    +---------------------------+
    |                        0  |
    +---------------------------+

CAST AS DOUBLE

CAST (expr AS DOUBLE)

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi tipe DOUBLE.

Tipe data sumber

  • BOOLEAN

  • DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, atau TINYINT

  • BIGINT

  • DATE, DATETIME, TIMESTAMP, atau TIME

  • VARCHAR

  • JSON

Aturan konversi

  • Jika nilai VARCHAR sumber bukan angka, nilai 0.0 dikembalikan setelah nilai sumber dikonversi ke tipe DOUBLE.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai China dari tipe VARCHAR ke tipe DOUBLE:

    SELECT CAST( 'China' AS DOUBLE);

    Hasil berikut dikembalikan:

    +--------------------------+
    | CAST( 'China' AS DOUBLE) |
    +--------------------------+
    |                      0.0 |
    +--------------------------+
  • Jika nilai JSON sumber bukan angka, NULL dikembalikan ketika nilai sumber dikonversi ke tipe DOUBLE.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai {} dari tipe JSON ke tipe DOUBLE:

    SELECT CAST(JSON '{}' AS DOUBLE);

    Hasil berikut dikembalikan:

    NULL

Contoh

Eksekusi pernyataan berikut untuk mengonversi nilai 2021-09-17 dari tipe DATE ke tipe DOUBLE:

SELECT CAST(DATE '2021-09-17' AS DOUBLE);

Hasil berikut dikembalikan:

+------------------------------------+
| CAST(DATE '2021-09-17' AS DOUBLE)  |
+------------------------------------+
|                        2.0210917E7 |
+------------------------------------+

CAST AS DATE|DATETIME|TIMESTAMP|TIME

CAST (expr AS DATE|DATETIME|TIMESTAMP|TIME)

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi tipe DATE, DATETIME, TIMESTAMP, atau TIME.

Tipe data sumber

  • DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, atau TINYINT

  • BIGINT

  • DOUBLE

  • DATE, DATETIME, TIMESTAMP, atau TIME

  • VARCHAR

  • JSON

Aturan konversi

  • Jika nilai VARCHAR atau BIGINT sumber tidak sesuai dengan format TIME, NULL dikembalikan setelah konversi.

    Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai a dari tipe VARCHAR ke tipe TIME:

    SELECT CAST('a' AS TIME);

    Nilai NULL dikembalikan seperti yang ditunjukkan pada hasil berikut karena nilai sumber tidak sesuai dengan format TIME:

    +-------------------+
    | CAST('a' AS TIME) |
    +-------------------+
    | NULL              |
    +-------------------+
  • Jika tipe data tujuan berisi waktu dan tanggal tetapi informasi terkait tidak termasuk dalam data sumber, aturan berikut berlaku:

    • Secara default, jika waktu tidak termasuk dalam nilai yang ditentukan oleh expr, nilai 00:00:00 dikembalikan setelah konversi.

      Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai 2001-1-22 dari tipe TIMESTAMP ke tipe TIME:

      SELECT CAST(TIMESTAMP '2001-1-22' AS TIME);

      Nilai 00:00:00 dikembalikan seperti yang ditunjukkan pada hasil berikut. Hal ini karena waktu tidak termasuk dalam data sumber.

      +-------------------------------------+
      | CAST(TIMESTAMP '2001-1-22' AS TIME) |
      +-------------------------------------+
      | 00:00:00                            |
      +-------------------------------------+
    • Secara default, jika tanggal tidak termasuk dalam nilai yang ditentukan oleh expr, tanggal sistem saat kueri dieksekusi di klien dikembalikan setelah konversi.

      Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai 00:00:00 dari tipe TIME ke tipe DATE:

      SELECT CAST(TIME '00:00:00' AS DATE);

      Tanggal sistem saat kueri dieksekusi dikembalikan seperti yang ditunjukkan pada hasil berikut. Hal ini karena tanggal tidak termasuk dalam data sumber.

      +-------------------------------+
      | CAST(TIME '00:00:00' AS DATE) |
      +-------------------------------+
      | 2021-09-14                    |
      +-------------------------------+

Contoh

Eksekusi pernyataan berikut untuk mengonversi nilai 20010122000000 dari tipe BIGINT ke tipe DATE:

SELECT CAST(20010122000000 AS DATE);

Hasil berikut dikembalikan:

+------------------------------+
| CAST(20010122000000 AS DATE) |
+------------------------------+
| 2001-01-22                   |
+------------------------------+

CAST AS VARBINARY

CAST (expr AS VARBINARY)

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi tipe VARBINARY.

Tipe data sumber

  • BOOLEAN

  • DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, atau TINYINT

  • BIGINT

  • DOUBLE

  • DATE, DATETIME, TIMESTAMP, atau TIME

  • VARCHAR

  • JSON

Contoh

Eksekusi pernyataan berikut untuk mengonversi nilai CHINA dari tipe VARCHAR ke tipe VARBINARY:

SELECT CAST(CAST('CHINA' AS VARBINARY) AS VARCHAR);

Hasil berikut dikembalikan:

+--------------------------------------------------------+
| CAST(CAST('CHINA' AS VARBINARY) AS VARCHAR)            |
+--------------------------------------------------------+
| CHINA                                                  |
+--------------------------------------------------------+

CAST AS VARCHAR

CAST (expr AS VARCHAR)

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi tipe VARCHAR.

Tipe data sumber

  • BOOLEAN

  • DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, atau TINYINT

  • BIGINT

  • DOUBLE

  • DATE, DATETIME, TIMESTAMP, atau TIME

  • VARBINARY

    Catatan

    Hanya kluster AnalyticDB for MySQL versi 3.1.4 atau lebih baru yang memungkinkan Anda mengonversi data dari tipe VARBINARY ke tipe VARCHAR menggunakan fungsi CAST.

  • MAP

  • JSON

Contoh

Eksekusi pernyataan berikut untuk mengonversi nilai 2001-1-22 00:00:00 dari tipe TIMESTAMP ke tipe VARCHAR:

SELECT CAST(TIMESTAMP '2001-1-22 00:00:00' AS VARCHAR);

Hasil berikut dikembalikan:

+-------------------------------------------------+
| CAST(TIMESTAMP '2001-1-22 00:00:00' AS VARCHAR) |
+-------------------------------------------------+
| 2001-01-22 00:00:00                             |
+-------------------------------------------------+

CAST AS ARRAY

CAST (expr AS ARRAY<element_type>)

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi array bertipe <element_type>.

Tipe data sumber

  • expr: VARCHAR atau JSON.

  • <element_type>: TINYINT, SMALLINT, INT/INTEGER, atau FLOAT.

Aturan konversi

Jika nilai VARCHAR atau JSON sumber tidak sesuai dengan format ARRAY, kesalahan akan dikembalikan selama konversi.

Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai VARCHAR {}} menjadi array elemen bertipe FLOAT:

SELECT CAST('{}}' AS ARRAY<float>);

Pesan kesalahan berikut dikembalikan karena nilai sumber tidak sesuai dengan format ARRAY:

ERROR 1815 (HY000): [30013, 2021091815372119216818804803453204662] : Value cannot be cast to array(real)

Contoh

Eksekusi pernyataan berikut untuk mengonversi nilai JSON [1,2,3] menjadi array elemen bertipe INT:

SELECT CAST( JSON '[1,2,3]' AS ARRAY<int>);

Hasil berikut dikembalikan:

+-------------------------------------+
| CAST( JSON '[1,2,3]' AS ARRAY<int> |
+-------------------------------------+
| [1,2,3]                             |
+-------------------------------------+

CAST AS MAP

CAST (expr AS MAP<element_type_1,element_type_2>)

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi peta yang memetakan tipe <element_type_1> ke tipe <element_type_2>.

Tipe data sumber

  • expr: VARCHAR.

  • <element_type_1>: BOOLEAN, DECIMAL, DOUBLE, FLOAT, BIGINT, INT/INTEGER, SMALLINT, TINYINT, atau VARCHAR.

  • <element_type_2>: BOOLEAN, DECIMAL, DOUBLE, FLOAT, BIGINT, INT/INTEGER, SMALLINT, TINYINT, VARCHAR, ARRAY, JSON, atau MAP.

Aturan konversi

Jika nilai VARCHAR sumber tidak sesuai dengan format MAP, kesalahan akan dikembalikan selama konversi.

Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai VARCHAR [a,b,c] menjadi tipe MAP:

SELECT CAST('[a,b,c]' AS MAP<varchar,varchar>);

Pesan kesalahan berikut dikembalikan:

ERROR 1815 (HY000): [30013, 2021091815562519216818804803453207833] : Value cannot be cast to map(varchar,varchar)

Contoh

Eksekusi pernyataan berikut untuk mengonversi nilai VARCHAR {"1":"a"} menjadi peta yang memetakan elemen VARCHAR ke tipe VARCHAR:

SELECT CAST('{"1":"a"}' AS MAP<varchar,varchar>);

Hasil berikut dikembalikan:

+-------------------------------------------+
| CAST('{"1":"a"}' AS MAP<varchar,varchar>) |
+-------------------------------------------+
| {"1":"a"}                                 |
+-------------------------------------------+

CAST AS JSON

CAST (expr AS JSON)

Deskripsi

Mengonversi nilai yang ditentukan oleh expr menjadi tipe JSON.

Tipe data sumber

  • BOOLEAN

  • DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, atau TINYINT

  • BIGINT

  • DOUBLE

  • VARCHAR

  • ARRAY

Aturan konversi

Jika nilai VARCHAR sumber tidak sesuai dengan format JSON, NULL akan dikembalikan setelah konversi.

Sebagai contoh, eksekusi pernyataan berikut untuk mengonversi nilai {}} dari tipe VARCHAR ke tipe JSON:

SELECT CAST('{}}' AS JSON);

Hasil berikut dikembalikan:

NULL

Contoh

  • Eksekusi pernyataan berikut untuk mengonversi nilai {} dari tipe VARCHAR ke tipe JSON:

    SELECT CAST('{}' AS JSON);

    Hasil berikut dikembalikan:

    +--------------------+
    | CAST('{}' AS JSON) |
    +--------------------+
    | {}                 |
    +--------------------+
  • Eksekusi pernyataan berikut untuk mengonversi nilai 0 dari tipe BIGINT ke tipe JSON:

    SELECT CAST( BIGINT '0' AS JSON);

    Hasil berikut dikembalikan:

    +---------------------------+
    | CAST( BIGINT '0' AS JSON) |
    +---------------------------+
    | 0                         |
    +---------------------------+