UNCOMPRESSED_LENGTH() în MySQL

Criptare și hash MySQL 5.0+

Returnează lungimea pe care o avea textul înainte de COMPRESS(), fără să-l decomprime.

Sintaxă
UNCOMPRESSED_LENGTH(text_comprimat)

Ce face UNCOMPRESSED_LENGTH()

COMPRESS() salvează lungimea originală în primii 4 octeți ai rezultatului. UNCOMPRESSED_LENGTH() citește doar acești octeți, deci este mult mai rapidă decât LENGTH(UNCOMPRESS(...)).

Funcția nu verifică dacă restul datelor este valid. Pe un text care nu a fost comprimat, rezultatul nu are sens.

Parametri

Parametru Descriere
text_comprimat Rezultatul lui COMPRESS().

Ce returnează

Lungimea originală în octeți sau NULL.

Exemple

Exemplul 1: Lungimea originală și cea comprimată

SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('a', 30))) AS original,
       LENGTH(COMPRESS(REPEAT('a', 30))) AS comprimat;

Rezultat

+----------+-----------+
| original | comprimat |
+----------+-----------+
|       30 |        15 |
+----------+-----------+

Greșeli frecvente

  • Folosești rezultatul ca număr de caractere. Este numărul de octeți: un text cu diacritice în utf8mb4 are mai mulți octeți decât caractere.

Comenzi înrudite

  • COMPRESS(): Comprimă un text (cu zlib) și returnează rezultatul ca șir binar.
  • UNCOMPRESS(): Decomprimă un text comprimat cu COMPRESS(); returnează NULL dacă datele nu sunt comprimate.
  • LENGTH(): Returnează lungimea unui text în octeți (bytes), nu în caractere.