WEIGHT_STRING() în MySQL

Returnează „greutatea” de sortare a unui text după colație; folosită la depanarea comparațiilor.

Sintaxă
WEIGHT_STRING(sir [AS {CHAR|BINARY}(n)])

Ce face WEIGHT_STRING()

MySQL compară și sortează textele după o greutate calculată de colație. WEIGHT_STRING() îți arată această greutate ca șir binar (de obicei afișat cu HEX()).

Două texte cu aceeași greutate sunt considerate egale. Așa poți înțelege de ce 'Iasi' = 'Iași' este adevărat cu colația implicită.

Parametri

Parametru Descriere
sir Textul analizat.
AS CHAR(n) / AS BINARY(n) Opțional. Completează sau taie textul la n caractere/octeți înainte de calcul.

Ce returnează

Un șir binar cu greutatea de sortare.

Exemple

Exemplul 1: De ce sunt egale textele cu și fără diacritice

SELECT HEX(WEIGHT_STRING('Iasi')) AS fara_diacritice,
       HEX(WEIGHT_STRING('Iași')) AS cu_diacritice,
       WEIGHT_STRING('Iasi') = WEIGHT_STRING('Iași') AS aceeasi_greutate;

Rezultat

+------------------+------------------+------------------+
| fara_diacritice  | cu_diacritice    | aceeasi_greutate |
+------------------+------------------+------------------+
| 1D321C471E711D32 | 1D321C471E711D32 |                1 |
+------------------+------------------+------------------+

Greșeli frecvente

  • Folosești WEIGHT_STRING() în codul aplicației. Este o funcție de depanare, iar rezultatul depinde de colație și de versiunea MySQL.

Comenzi înrudite

  • STRCMP(): Compară două texte și returnează -1, 0 sau 1, după ordinea lor alfabetică.
  • HEX() și UNHEX(): HEX() transformă un număr sau un text în hexazecimal; UNHEX() face conversia inversă.
  • Operatori de comparație: Compară două valori și returnează 1 (adevărat), 0 (fals) sau NULL.