Tous les produits
Search
Centre de documentation

MaxCompute:HEX

Dernière mise à jour :Aug 10, 2026

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 que hex('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.