COERCIBILITY() în MySQL

Returnează un număr de la 0 la 6 care arată cât de „puternică” este colația unui text.

Sintaxă
COERCIBILITY(text)

Ce face COERCIBILITY()

Când compari două texte cu colații diferite, MySQL alege colația celui cu valoarea COERCIBILITY() mai mică. Dacă ambele au aceeași valoare și colații diferite, primești eroarea Illegal mix of collations.

Valorile: 0 = colație explicită (COLLATE), 1 = fără colație (texte cu colații diferite lipite), 2 = implicită (coloană, variabilă locală), 3 = constantă de sistem (USER()), 4 = text scris direct, 5 = număr sau dată, 6 = NULL.

Parametri

Parametru Descriere
text Expresia verificată.

Ce returnează

Un număr între 0 și 6.

Exemple

Exemplul 1: Valorile pentru diferite expresii

CREATE TABLE clienti (nume VARCHAR(30));
INSERT INTO clienti VALUES ('Ana');

SELECT COERCIBILITY(nume COLLATE utf8mb4_bin) AS explicita,
       COERCIBILITY(nume) AS coloana,
       COERCIBILITY(USER()) AS sistem,
       COERCIBILITY('Ana') AS text,
       COERCIBILITY(10) AS numar,
       COERCIBILITY(NULL) AS nul
FROM clienti;

Rezultat

+-----------+---------+--------+------+-------+-----+
| explicita | coloana | sistem | text | numar | nul |
+-----------+---------+--------+------+-------+-----+
|         0 |       2 |      3 |    4 |     5 |   6 |
+-----------+---------+--------+------+-------+-----+

Greșeli frecvente

  • Rezolvi eroarea Illegal mix of collations schimbând colația tabelului întreg. De multe ori ajunge un COLLATE în interogare, care are prioritate (valoarea 0).

Comenzi înrudite

  • COLLATION(): Returnează colația unui text: regulile după care se compară și se sortează.
  • CHARSET(): Returnează setul de caractere al unui text (utf8mb4, latin1 etc.).