COLLATION() în MySQL

Returnează colația unui text: regulile după care se compară și se sortează.

Sintaxă
COLLATION(text)

Ce face COLLATION()

Colația decide dacă 'ana' = 'ANA' și dacă 'a' = 'ă', dar și ordinea la sortare. Numele ei spune setul de caractere și regulile: utf8mb4_0900_ai_ci înseamnă fără diferență între diacritice (ai, accent insensitive) și între majuscule (ci, case insensitive); _bin compară octeții exact.

Pentru limba română există utf8mb4_ro_0900_ai_ci și utf8mb4_ro_0900_as_cs, care sortează corect ă, â, î, ș și ț.

Parametri

Parametru Descriere
text Textul sau coloana verificată.

Ce returnează

Numele colației.

Exemple

Exemplul 1: Colația unor valori

SELECT COLLATION('abc') AS implicita,
       COLLATION(_latin1'abc') AS latin1,
       COLLATION('abc' COLLATE utf8mb4_ro_0900_as_cs) AS romana;

Rezultat

+--------------------+-------------------+-----------------------+
| implicita          | latin1            | romana                |
+--------------------+-------------------+-----------------------+
| utf8mb4_0900_ai_ci | latin1_swedish_ci | utf8mb4_ro_0900_as_cs |
+--------------------+-------------------+-----------------------+

Exemplul 2: Colația schimbă rezultatul comparației

SELECT 'ana' = 'ANA' AS ci,
       'ana' = 'ANA' COLLATE utf8mb4_bin AS bin,
       'casa' = 'cașa' AS ai,
       'casa' = 'cașa' COLLATE utf8mb4_0900_as_cs AS as_cs;

Rezultat

+----+------+----+-------+
| ci | bin  | ai | as_cs |
+----+------+----+-------+
|  1 |    0 |  1 |     0 |
+----+------+----+-------+

Exemplul 3: Colația unei coloane

CREATE TABLE orase (nume VARCHAR(30) COLLATE utf8mb4_ro_0900_ai_ci);
INSERT INTO orase VALUES ('Iași');

SELECT nume, COLLATION(nume) FROM orase;

Rezultat

+-------+-----------------------+
| nume  | COLLATION(nume)       |
+-------+-----------------------+
| Iași  | utf8mb4_ro_0900_ai_ci |
+-------+-----------------------+

Greșeli frecvente

  • Te miri că WHERE nume = 'iasi' găsește „Iași”. Colația implicită ignoră diacriticele și majusculele; folosește o colație _as_cs sau _bin dacă vrei potrivire exactă.

Comenzi înrudite

  • CHARSET(): Returnează setul de caractere al unui text (utf8mb4, latin1 etc.).
  • COERCIBILITY(): Returnează un număr de la 0 la 6 care arată cât de „puternică” este colația unui text.
  • STRCMP(): Compară două texte și returnează -1, 0 sau 1, după ordinea lor alfabetică.