sql >> Databasteknik >  >> RDS >> Mysql

Hur får man MySQL att hantera strängar som SQLite gör, med hänsyn till Unicode och sortering?

MySQL vill konvertera strängar när man gör INSERT och SELECT . Konverteringen är mellan vad du deklarerar som klient att ha och vad kolumnen deklareras att lagras.

Det enda sättet att undvika det är med VARBINARY och BLOB istället för VARCHAR och TEXT .

Användningen av COLLATION utf8mb4_bin undviker inte konvertering till/från CHARACTER SET utf8mb4; det står bara att WHERE och ORDER BY bör jämföra bitarna istället för att ta itu med accenter och fallvikning.

Tänk på att CHARACTER SET utf8mb4 är ett sätt att koda text; COLLATION utf8mb4_* är regler för att jämföra texter i den kodningen. _bin är enfaldig.

UNIQUE innebär att jämföra för jämlikhet, därav COLLATION . I de flesta utf8mb4-kollationer kommer 3:an (utan mellanslag) att jämföras lika. utf8mb4_bin kommer att behandla de 3 som olika. utf8mb4_hungarian_ci behandlar one=One>öne.

De efterföljande utrymmena styrs av kolumnens datatyp (VARCHAR eller annan). Den senaste versionen har till och med en inställning som rör om man ska överväga efterföljande utrymmen.



  1. SQL Server 2008 Express CONCAT() existerar inte?

  2. lista alla tabeller i en databas med MySQLi

  3. MySQL - Välj radnummer för en post

  4. MySQL:Varför fungerar inte escape i LIKE-operatorn?