HEX() și UNHEX() în MySQL

HEX() transformă un număr sau un text în hexazecimal; UNHEX() face conversia inversă.

Sintaxă
HEX(numar_sau_text)
UNHEX(text_hex)

Ce face HEX() și UNHEX()

HEX() are două comportamente: pentru un număr dă reprezentarea lui în baza 16 (255 → FF), iar pentru un text dă codul hexazecimal al fiecărui octet.

UNHEX() transformă un text hexazecimal înapoi în octeții originali. Este folosit des la stocarea compactă a hash-urilor sau a UUID-urilor.

Parametri

Parametru Descriere
numar_sau_text Valoarea convertită.
text_hex Text format din cifre hexazecimale (0-9, A-F).

Ce returnează

Textul hexazecimal, respectiv șirul binar decodat (NULL dacă textul nu e hexazecimal valid).

Exemple

Exemplul 1: Numere, texte și conversia inversă

SELECT HEX(255) AS numar, HEX('Ș') AS litera,
       CAST(UNHEX('4D7953514C') AS CHAR) AS decodat;

Rezultat

+-------+--------+---------+
| numar | litera | decodat |
+-------+--------+---------+
| FF    | C898   | MySQL   |
+-------+--------+---------+

Exemplul 2: Stocarea compactă a unui hash

CREATE TABLE fisiere (nume VARCHAR(30), sha256 BINARY(32));
INSERT INTO fisiere VALUES ('raport.pdf', UNHEX(SHA2('continut raport', 256)));

SELECT nume, LENGTH(sha256) AS octeti, LOWER(HEX(sha256)) AS sha256_text FROM fisiere;

Rezultat

+------------+--------+------------------------------------------------------------------+
| nume       | octeti | sha256_text                                                      |
+------------+--------+------------------------------------------------------------------+
| raport.pdf |     32 | 7c2a2846fa5e49f3a020facab15c45aadaaba5f0ab27f423273a4ffded1bfd1b |
+------------+--------+------------------------------------------------------------------+

Greșeli frecvente

  • Te aștepți ca HEX('255') să dea FF. Pentru text, funcția codează caracterele: rezultatul este 323535. Trimite un număr, nu un text.

Comenzi înrudite

  • BIN() și OCT(): Returnează reprezentarea unui număr în baza 2 (BIN) sau în baza 8 (OCT), ca text.
  • CONV(): Convertește un număr dintr-o bază în alta (2-36), de exemplu din hexazecimal în zecimal.
  • SHA2(): Calculează suma de control SHA-2 (SHA-224, SHA-256, SHA-384 sau SHA-512) a unui text.