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ă deaFF. Pentru text, funcția codează caracterele: rezultatul este323535. 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.