Converte um número ou string em sua representação hexadecimal. A HEX é uma função matemática do MaxCompute V2.0.
Sintaxe
string hex(<number>)
Parâmetros
number: Obrigatório. Tipos compatíveis: BIGINT, INT, SMALLINT, TINYINT, DOUBLE, FLOAT, DECIMAL, STRING.
Tipos inteiros (BIGINT, INT, SMALLINT, TINYINT): a função retorna a representação hexadecimal do valor numérico.
Tipos de ponto flutuante e decimais (DOUBLE, FLOAT, DECIMAL): a função codifica a representação em string decimal do valor, não o padrão de bits IEEE 754.
STRING: a função codifica a entrada byte a byte.
Valor de retorno
Retorna um valor STRING.
|
Entrada |
Valor de retorno |
|
Qualquer valor diferente de zero e não nulo |
String hexadecimal |
|
|
|
|
|
|
Dados de exemplo
Esta seção apresenta dados source de exemplo e casos de uso para ilustrar a utilização da função. Crie uma tabela chamada mf_math_fun_t e insira dados conforme os comandos a seguir:
create table if not exists mf_math_fun_t(
int_data int,
bigint_data bigint,
double_data double,
decimal_data decimal,
float_data float,
string_data string
);
insert into mf_math_fun_t values
(null, -10, 0.525, 0.525BD, cast(0.525 as float), '10'),
(-20, null, -0.1, -0.1BD, cast(-0.1 as float), '-10'),
(0, -1, null, 20.45BD, cast(-1 as float), '30'),
(-40, 4, 0.89, null, cast(0.89 as float), '-30'),
(5, -50, -1, -1BD, null, '50'),
(-60, 6, 1.5, 1.5BD, cast(1.5 as float), '-50'),
(-1, -70, -7.5, -7.5BD, cast(-7.5 as float),null ),
(-80, 1, -10.2, -10.2BD, cast(-10.2 as float), '-1' ),
(9, -90, 2.58, 2.58BD, cast(2.58 as float), '0'),
(-100, 10, -5.8, -5.8BD, cast(-5.8 as float), '-90');
Consulte os dados da tabela mf_math_fun_t:
select * from mf_math_fun_t;
-- The following result is returned:
+------------+-------------+-------------+--------------+------------+-------------+
| int_data | bigint_data | double_data | decimal_data | float_data | string_data |
+------------+-------------+-------------+--------------+------------+-------------+
| NULL | -10 | 0.525 | 0.525 | 0.525 | 10 |
| -20 | NULL | -0.1 | -0.1 | -0.1 | -10 |
| 0 | -1 | NULL | 20.45 | -1.0 | 30 |
| -40 | 4 | 0.89 | NULL | 0.89 | -30 |
| 5 | -50 | -1.0 | -1 | NULL | 50 |
| -60 | 6 | 1.5 | 1.5 | 1.5 | -50 |
| -1 | -70 | -7.5 | -7.5 | -7.5 | NULL |
| -80 | 1 | -10.2 | -10.2 | -10.2 | -1 |
| 9 | -90 | 2.58 | 2.58 | 2.58 | 0 |
| -100 | 10 | -5.8 | -5.8 | -5.8 | -90 |
+------------+-------------+-------------+--------------+------------+-------------+
Exemplos
Valores estáticos
-- Integer input: returns the hex representation of the numeric value
select hex(17);
-- Returns: 11
select hex(0);
-- Returns: 0
-- String input: returns the hex encoding of the UTF-8 bytes
select hex('abc');
-- Returns: 616263
select hex('17');
-- Returns: 3137
-- Null input returns an error
select hex(null);
-- An error is returned.
Entradas inteiras e strings produzem resultados diferentes.hex(17)converte o número 17 para hexadecimal (11), enquantohex('17')codifica os caracteres da string'1'e'7'como bytes (3137).
Dados de tabela
O exemplo a seguir converte todas as colunas numéricas para hexadecimal usando a tabela de exemplo mf_math_fun_t.
Ative a edição de tipos de dados do MaxCompute V2.0 antes de executar esta consulta.
set odps.sql.type.system.odps2=true;
select
hex(int_data) as int_new,
hex(bigint_data) as bigint_new,
hex(double_data) as double_new,
hex(decimal_data) as decimal_new,
hex(float_data) as float_new,
hex(string_data) as string_new
from mf_math_fun_t;
Resultado:
+------------------+------------------+------------+-------------+------------+------------+
| int_new | bigint_new | double_new | decimal_new | float_new | string_new |
+------------------+------------------+------------+-------------+------------+------------+
| NULL | FFFFFFFFFFFFFFF6 | 302E353235 | 302E353235 | 302E353235 | 3130 |
| FFFFFFFFFFFFFFEC | NULL | 2D302E31 | 2D302E31 | 2D302E31 | 2D3130 |
| 0 | FFFFFFFFFFFFFFFF | NULL | 32302E3435 | 2D31 | 3330 |
| FFFFFFFFFFFFFFD8 | 4 | 302E3839 | NULL | 302E3839 | 2D3330 |
| 5 | FFFFFFFFFFFFFFCE | 2D312E30 | 2D31 | NULL | 3530 |
| FFFFFFFFFFFFFFC4 | 6 | 312E35 | 312E35 | 312E35 | 2D3530 |
| FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFBA | 2D372E35 | 2D372E35 | 2D372E35 | NULL |
| FFFFFFFFFFFFFFB0 | 1 | 2D31302E32 | 2D31302E32 | 2D31302E32 | 2D31 |
| 9 | FFFFFFFFFFFFFFA6 | 322E3538 | 322E3538 | 322E3538 | 30 |
| FFFFFFFFFFFFFF9C | A | 2D352E38 | 2D352E38 | 2D352E38 | 2D3930 |
+------------------+------------------+------------+-------------+------------+------------+
Inteiros negativos (como -10 armazenado como BIGINT) retornam a representação hexadecimal em complemento de dois (FFFFFFFFFFFFFFF6). Valores DOUBLE, FLOAT e DECIMAL são codificados como o hexadecimal de sua representação em string decimal, não como padrões de bits IEEE 754.
Funções relacionadas
A HEX é uma função matemática. Para ver funções relacionadas, consulte Funções matemáticas.