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 collationsschimbând colația tabelului întreg. De multe ori ajunge unCOLLATEî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.).