Todos os produtos
Search
Central de documentação

AnalyticDB:Função CAST

Última atualização: Jun 27, 2026

Use CAST para converter um valor de um tipo de dados para outro no AnalyticDB for MySQL.

Sintaxe

CAST(expr AS type)

Parâmetro

Obrigatório

Descrição

expr

Sim

Valor ou expressão source a converter

type

Sim

Tipo de dados de destino

Conversões suportadas

A tabela a seguir lista os tipos de destino compatíveis com CAST e os tipos source aceitos por cada um.

Tipo de destino

Tipos source aceitos

BOOLEAN

DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, TINYINT, BIGINT, DOUBLE, VARCHAR, JSON

DECIMAL(M,D), FLOAT, INT, INTEGER, SMALLINT, TINYINT

DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, TINYINT, BIGINT, DOUBLE, VARCHAR, JSON

BIGINT

BOOLEAN, DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, TINYINT, DOUBLE, DATE, DATETIME, TIMESTAMP, TIME, VARCHAR

DOUBLE

BOOLEAN, DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, TINYINT, BIGINT, DATE, DATETIME, TIMESTAMP, TIME, VARCHAR, JSON

DATE, DATETIME, TIMESTAMP, TIME

DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, TINYINT, BIGINT, DOUBLE, DATE, DATETIME, TIMESTAMP, TIME, VARCHAR, JSON

VARBINARY

BOOLEAN, DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, TINYINT, BIGINT, DOUBLE, DATE, DATETIME, TIMESTAMP, TIME, VARCHAR, JSON

VARCHAR

BOOLEAN, DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, TINYINT, BIGINT, DOUBLE, DATE, DATETIME, TIMESTAMP, TIME, VARBINARY, MAP, JSON

ARRAY\

VARCHAR, JSON

MAP\

VARCHAR

JSON

BOOLEAN, DECIMAL(M,D), FLOAT, INT/INTEGER, SMALLINT, TINYINT, BIGINT, DOUBLE, VARCHAR, ARRAY

A conversão de VARBINARY para VARCHAR exige o AnalyticDB for MySQL V3.1.4 ou posterior.

Comportamento em caso de falha na conversão

O resultado de uma falha na conversão depende dos tipos source e de destino.

Cenário

Resultado

Valor VARCHAR ou BIGINT incompatível com o formato TIME

NULL

Valor fora do intervalo convertido para tipo numérico (exceto grupo INT)

NULL

VARCHAR não numérico convertido para DECIMAL(M,D) ou FLOAT

NULL

JSON não numérico convertido para BIGINT ou DOUBLE

NULL

VARCHAR em formato inválido convertido para JSON

NULL

Valor fora do intervalo convertido para INT/INTEGER, SMALLINT ou TINYINT

NULL

VARCHAR não numérico convertido para INT/INTEGER, SMALLINT ou TINYINT

0

JSON não numérico convertido para INT/INTEGER, SMALLINT ou TINYINT

Erro

Valor em formato inválido convertido para ARRAY

Erro

Valor em formato inválido convertido para MAP

Erro

CAST AS BOOLEAN

CAST(expr AS BOOLEAN)

Converte expr para BOOLEAN. O resultado é sempre 1 (verdadeiro) ou 0 (falso).

Regras de conversão

Tipo source

Regra

VARCHAR, JSON

true ou 11; false ou 00; demais valores → NULL

DOUBLE

Diferente de 0.01; 0.00

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

Diferente de zero → 1; 00

Exemplos

-- Cast VARCHAR '1' to BOOLEAN
SELECT CAST('1' AS BOOLEAN);
+----------------------+
| CAST('1' AS BOOLEAN) |
+----------------------+
|                    1 |
+----------------------+
-- Non-boolean string returns NULL
SELECT CAST('a' AS BOOLEAN);
NULL
-- Non-zero DOUBLE returns 1
SELECT CAST(4.3 AS BOOLEAN);
+----------------------+
| CAST(4.3 AS BOOLEAN) |
+----------------------+
|                    1 |
+----------------------+
-- Non-zero INT returns 1
SELECT CAST(5 AS BOOLEAN);
+--------------------+
| 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])

Converte expr para um dos tipos numéricos: DECIMAL(M,D), FLOAT, INT, INTEGER, SMALLINT ou TINYINT.

Regras de conversão

  • Valores fora do intervalo retornam NULL. Por exemplo, 99999999 excede o intervalo do SMALLINT:

    SELECT CAST(99999999 AS SMALLINT);
    NULL
  • Conversões de alta precisão para baixa precisão arredondam o valor:

    SELECT CAST(1.23456789 AS FLOAT);
    +---------------------------+
    | CAST(1.23456789 AS FLOAT) |
    +---------------------------+
    |                 1.2345679 |
    +---------------------------+
  • Converter DECIMAL(M,D), DOUBLE ou FLOAT para INT/INTEGER, SMALLINT ou TINYINT arredonda o valor:

    SELECT CAST(1.1342 AS INT);
    +---------------------+
    | CAST(1.1342 AS INT) |
    +---------------------+
    |                   1 |
    +---------------------+
  • Converter VARCHAR não numérico para DECIMAL(M,D) ou FLOAT retorna NULL:

    SELECT CAST('China' AS DECIMAL(5,2));
    NULL
  • Converter VARCHAR não numérico para INT/INTEGER, SMALLINT ou TINYINT retorna 0:

    SELECT CAST('China' AS SMALLINT);
    +---------------------------+
    | CAST('China' AS SMALLINT) |
    +---------------------------+
    |                         0 |
    +---------------------------+
  • Converter JSON não numérico para INT/INTEGER, SMALLINT ou TINYINT gera erro:

    SELECT CAST(CAST('[1,2,3]' AS JSON) AS SMALLINT);
    ERROR 1815 (HY000): [20034, 2021091814103119216818804803453190138] : Cannot cast json to smallint

Exemplo

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

CAST AS BIGINT

CAST(expr AS BIGINT)

Converte expr para o tipo BIGINT.

Regras de conversão

  • VARCHAR não numérico retorna 0:

    SELECT CAST('a' AS BIGINT);
    +---------------------+
    | CAST('a' AS BIGINT) |
    +---------------------+
    |                   0 |
    +---------------------+
  • Valores FLOAT, DOUBLE ou DECIMAL(M,D) são arredondados:

    SELECT CAST(1.23456789 AS BIGINT);
    +----------------------------+
    | CAST(1.23456789 AS BIGINT) |
    +----------------------------+
    |                          1 |
    +----------------------------+
  • JSON não numérico retorna NULL:

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

Exemplos

-- DATE to BIGINT: returns the date as an integer in YYYYMMDD format
SELECT CAST(DATE '2021-09-18' AS BIGINT);
+-----------------------------------+
| CAST(DATE '2021-09-18' AS BIGINT) |
+-----------------------------------+
|                          20210918 |
+-----------------------------------+
-- JSON numeric value to BIGINT
SELECT CAST(JSON '-1' AS BIGINT);
+---------------------------+
| CAST(JSON '-1' AS BIGINT) |
+---------------------------+
|                        -1 |
+---------------------------+
-- Expression result to BIGINT
SELECT CAST(FLOOR(4/5) AS BIGINT);
+----------------------------+
| CAST(FLOOR(4/5) AS BIGINT) |
+----------------------------+
|                          0 |
+----------------------------+

CAST AS DOUBLE

CAST(expr AS DOUBLE)

Converte expr para o tipo DOUBLE.

Regras de conversão

  • VARCHAR não numérico retorna 0.0:

    SELECT CAST('China' AS DOUBLE);
    +--------------------------+
    | CAST('China' AS DOUBLE)  |
    +--------------------------+
    |                      0.0 |
    +--------------------------+
  • JSON não numérico retorna NULL:

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

Exemplo

-- DATE to DOUBLE: returns the date as a floating-point number
SELECT CAST(DATE '2021-09-17' AS DOUBLE);
+------------------------------------+
| CAST(DATE '2021-09-17' AS DOUBLE)  |
+------------------------------------+
|                        2.0210917E7 |
+------------------------------------+

CAST AS DATE|DATETIME|TIMESTAMP|TIME

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

Converte expr para DATE, DATETIME, TIMESTAMP ou TIME.

Regras de conversão

  • VARCHAR ou BIGINT incompatível com o formato TIME retorna NULL:

    SELECT CAST('a' AS TIME);
    +-------------------+
    | CAST('a' AS TIME) |
    +-------------------+
    | NULL              |
    +-------------------+
  • A ausência do componente de hora assume o padrão 00:00:00:

    SELECT CAST(TIMESTAMP '2001-1-22' AS TIME);
    +-------------------------------------+
    | CAST(TIMESTAMP '2001-1-22' AS TIME) |
    +-------------------------------------+
    | 00:00:00                            |
    +-------------------------------------+
  • A ausência do componente de data assume a data do sistema no momento da execução da consulta:

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

Exemplo

-- BIGINT to DATE
SELECT CAST(20010122000000 AS DATE);
+------------------------------+
| CAST(20010122000000 AS DATE) |
+------------------------------+
| 2001-01-22                   |
+------------------------------+

CAST AS VARBINARY

CAST(expr AS VARBINARY)

Converte expr para o tipo VARBINARY. Para ler o resultado como string, aninhe outro CAST para VARCHAR.

Exemplo

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

CAST AS VARCHAR

CAST(expr AS VARCHAR)

Converte expr para o tipo VARCHAR.

A conversão de VARBINARY para VARCHAR exige o AnalyticDB for MySQL V3.1.4 ou posterior.

Exemplo

SELECT CAST(TIMESTAMP '2001-1-22 00:00:00' AS VARCHAR);
+-------------------------------------------------+
| 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>)

Converte expr para um array cujos elementos são do tipo element_type.

Parâmetro

Valores aceitos

expr

VARCHAR, JSON

element_type

TINYINT, SMALLINT, INT/INTEGER, FLOAT

Regras de conversão

Se expr não estiver em conformidade com o formato ARRAY, o sistema retornará erro:

SELECT CAST('{}}' AS ARRAY<float>);
ERROR 1815 (HY000): [30013, 2021091815372119216818804803453204662] : Value cannot be cast to array(real)

Exemplo

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

CAST AS MAP

CAST(expr AS MAP<key_type, value_type>)

Converte um valor VARCHAR em um mapa de key_type para value_type.

Parâmetro

Valores aceitos

expr

VARCHAR

key_type

BOOLEAN, DECIMAL, DOUBLE, FLOAT, BIGINT, INT/INTEGER, SMALLINT, TINYINT, VARCHAR

value_type

BOOLEAN, DECIMAL, DOUBLE, FLOAT, BIGINT, INT/INTEGER, SMALLINT, TINYINT, VARCHAR, ARRAY, JSON, MAP

Regras de conversão

Se expr não estiver em conformidade com o formato MAP, o sistema retornará erro:

SELECT CAST('[a,b,c]' AS MAP<varchar,varchar>);
ERROR 1815 (HY000): [30013, 2021091815562519216818804803453207833] : Value cannot be cast to map(varchar,varchar)

Exemplo

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

CAST AS JSON

CAST(expr AS JSON)

Converte expr para o tipo JSON.

Regras de conversão

Se expr for um VARCHAR fora do formato JSON, o resultado será NULL:

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

Exemplos

-- VARCHAR to JSON
SELECT CAST('{}' AS JSON);
+--------------------+
| CAST('{}' AS JSON) |
+--------------------+
| {}                 |
+--------------------+
-- BIGINT to JSON
SELECT CAST(BIGINT '0' AS JSON);
+--------------------------+
| CAST(BIGINT '0' AS JSON) |
+--------------------------+
| 0                        |
+--------------------------+