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_cssau_bindacă 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ă.