UUID_TO_BIN() în MySQL

Transformă un UUID text (36 de caractere) în 16 octeți binari, potriviți pentru coloane BINARY(16).

Sintaxă
UUID_TO_BIN(uuid_text [, schimba_ordinea])

Ce face UUID_TO_BIN()

Un UUID salvat ca text ocupă 36 de caractere; în binar ocupă doar 16 octeți, iar indexul devine mai mic și mai rapid. UUID_TO_BIN() face conversia, iar BIN_TO_UUID() face drumul invers.

Cu al doilea argument 1, funcția mută la început partea de timp care se schimbă cel mai rar. UUID-urile generate unul după altul devin astfel aproape ordonate, ceea ce ajută mult la inserări în cheia primară InnoDB. Dacă folosești 1 la salvare, trebuie să folosești 1 și la BIN_TO_UUID().

Parametri

Parametru Descriere
uuid_text UUID-ul ca text (cu sau fără cratime și acolade).
schimba_ordinea Opțional. 0 (implicit) păstrează ordinea; 1 mută partea de timp la început.

Ce returnează

Un VARBINARY(16); NULL pentru NULL; eroare pentru un text care nu e UUID.

Exemple

Exemplul 1: Cu și fără schimbarea ordinii

Rezultatul binar este afișat cu HEX().

SET @uuid = '6ccd780c-baba-1026-9564-5b8c656024db';

SELECT HEX(UUID_TO_BIN(@uuid)) AS ordine_normala,
       HEX(UUID_TO_BIN(@uuid, 1)) AS timp_la_inceput;

Rezultat

+----------------------------------+----------------------------------+
| ordine_normala                   | timp_la_inceput                  |
+----------------------------------+----------------------------------+
| 6CCD780CBABA102695645B8C656024DB | 1026BABA6CCD780C95645B8C656024DB |
+----------------------------------+----------------------------------+

Exemplul 2: Cheie primară BINARY(16)

CREATE TABLE comenzi (
  id BINARY(16) PRIMARY KEY,
  client VARCHAR(30)
);

INSERT INTO comenzi VALUES
  (UUID_TO_BIN('6ccd780c-baba-1026-9564-5b8c656024db', 1), 'Ana'),
  (UUID_TO_BIN('7d2e891d-baba-1026-9564-5b8c656024db', 1), 'Dan');

SELECT BIN_TO_UUID(id, 1) AS id, client, LENGTH(id) AS octeti
FROM comenzi
WHERE id = UUID_TO_BIN('7d2e891d-baba-1026-9564-5b8c656024db', 1);

Rezultat

+--------------------------------------+--------+--------+
| id                                   | client | octeti |
+--------------------------------------+--------+--------+
| 7d2e891d-baba-1026-9564-5b8c656024db | Dan    |     16 |
+--------------------------------------+--------+--------+

Greșeli frecvente

  • Salvezi cu UUID_TO_BIN(x, 1) și citești cu BIN_TO_UUID(x). Primești alt UUID; folosește același al doilea argument în ambele sensuri.
  • Compari coloana binară direct cu textul: WHERE id = '6ccd780c-...'. Nu găsește nimic; convertește textul cu UUID_TO_BIN().

Comenzi înrudite

  • BIN_TO_UUID(): Transformă un UUID binar (16 octeți) înapoi în text de 36 de caractere.
  • UUID(): Generează un identificator unic universal (UUID versiunea 1), un text de 36 de caractere.
  • IS_UUID(): Verifică dacă un text este un UUID valid: 1 (da), 0 (nu) sau NULL.