Tüm Ürünler
Search
Belge Merkezi

MaxCompute:HEX

Son Güncelleme:Oct 04, 2026

Bir sayıyı veya dizeyi onaltılık gösterimine dönüştürür. HEX, MaxCompute V2.0 matematik işlevidir.

Söz dizimi

string hex(<number>)

Parametreler

number: Zorunludur. Desteklenen veri türleri: BIGINT, INT, SMALLINT, TINYINT, DOUBLE, FLOAT, DECIMAL, STRING.

  • Tamsayı türleri (BIGINT, INT, SMALLINT, TINYINT): İşlev, sayısal değerin onaltılık gösterimini döndürür.

  • Kayan nokta ve ondalık türleri (DOUBLE, FLOAT, DECIMAL): İşlev, değerin IEEE 754 bit düzenini değil, ondalık dize gösterimini kodlar.

  • STRING: İşlev, girişi bayt bayt kodlar.

Dönüş değeri

Bir STRING değeri döndürür.

Giriş Dönüş değeri
Sıfır olmayan ve null olmayan herhangi bir değer Onaltılık dize
0 0
null null

Örnek veriler

Bu bölümde, işlevin nasıl kullanılacağını anlamanız için örnek kaynak veriler ve uygulamalar sunulmaktadır. mf_math_fun_t adlı bir tablo oluşturulur ve bu tabloya veri eklenir. Örnek ifadeler aşağıdaki gibidir:

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');

mf_math_fun_t tablosundaki verileri sorgulayın:

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         |
+------------+-------------+-------------+--------------+------------+-------------+

Örnekler

Statik değerler

-- 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.
Tamsayı ve dize girişleri farklı sonuçlar üretir. hex(17) ifadesi 17 sayısını onaltılık sisteme dönüştürür ( 11 ), oysa hex('17') ifadesi '1' ve '7' dize karakterlerini bayt olarak kodlar ( 3137 ).

Tablo verileri

Aşağıdaki örnekte, mf_math_fun_t örnek tablosu kullanılarak tüm sayısal sütunlar onaltılık sisteme dönüştürülür.

Bu sorguyu çalıştırmadan önce MaxCompute V2.0 veri türü sürümünü etkinleştirin.
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;

Sonuç:

+------------------+------------------+------------+-------------+------------+------------+
| 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     |
+------------------+------------------+------------+-------------+------------+------------+

Negatif tamsayılar (örneğin BIGINT olarak depolanan -10), ikiye tümleyen onaltılık gösterimlerini (FFFFFFFFFFFFFFF6) döndürür. DOUBLE, FLOAT ve DECIMAL değerleri, IEEE 754 bit düzenleri olarak değil, ondalık dize gösterimlerinin onaltılık kodlaması olarak işlenir.

İlgili işlevler

HEX bir matematik işlevidir. İlgili işlevler için bkz. Matematik işlevleri.