Convertit un nombre ou une chaîne en sa représentation hexadécimale. HEX est une fonction mathématique de MaxCompute V2.0.
Syntaxe
string hex(<number>)
Paramètres
number : Obligatoire. Types pris en charge : BIGINT, INT, SMALLINT, TINYINT, DOUBLE, FLOAT, DECIMAL, STRING.
Types entiers (BIGINT, INT, SMALLINT, TINYINT) : la fonction renvoie la représentation hexadécimale de la valeur numérique.
Types à virgule flottante et décimaux (DOUBLE, FLOAT, DECIMAL) : la fonction encode la représentation sous forme de chaîne décimale de la valeur, et non le modèle binaire IEEE 754.
STRING : la fonction encode l'entrée octet par octet.
Valeur de retour
Renvoie une valeur STRING.
| Entrée | Valeur de retour |
|---|---|
| Toute valeur non nulle et non NULL | Chaîne hexadécimale |
0 |
0 |
null |
null |
Exemple de données
Cette rubrique fournit des exemples de données source et d'utilisation pour vous aider à comprendre le fonctionnement de la fonction. Créez une table nommée mf_math_fun_t et insérez-y des données. Exemples d'instructions :
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');
Interrogez les données de la table 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 |
+------------+-------------+-------------+--------------+------------+-------------+
Exemples
Valeurs statiques
-- 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.
Les entrées de type entier et chaîne produisent des résultats différents.hex(17)convertit le nombre 17 en hexadécimal (11), tandis quehex('17')encode les caractères de la chaîne'1'et'7'sous forme d'octets (3137).
Données de table
L'exemple suivant convertit toutes les colonnes numériques en hexadécimal en utilisant la table d'exemple mf_math_fun_t.
Activez l'édition des types de données MaxCompute V2.0 avant d'exécuter cette requête.
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;
Résultat :
+------------------+------------------+------------+-------------+------------+------------+
| 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 |
+------------------+------------------+------------+-------------+------------+------------+
Les entiers négatifs (comme -10 stocké en tant que BIGINT) renvoient leur représentation hexadécimale en complément à deux (FFFFFFFFFFFFFFF6). Les valeurs DOUBLE, FLOAT et DECIMAL sont encodées sous forme d'hexadécimal de leur représentation en chaîne décimale, et non selon le modèle binaire IEEE 754.
Fonctions associées
HEX est une fonction mathématique. Pour les fonctions associées, consultez la rubrique Fonctions mathématiques.