Anda melewatkan poin tentang CHARACTER SET
dan COLLATION
. CHARACTER SET
adalah kumpulan karakter yang berbeda. COLLATION
mengatakan apakah akan memperlakukan karakter sebagai sama -- pikirkan A
dan a
-- karakter yang berbeda, tetapi diperlakukan untuk ORDER BY
dan WHERE =
, dll sebagai sama.
mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci |
+-----------------------------------+
| 1 |
+-----------------------------------+
Jadi di utf8_unicode_ci (atau utf8mb4_unicode_ci), kedua karakter tersebut dianggap "sama".
"Sama" adalah ujian untuk UNIQUE
kunci.
Setel COLLATION
untuk kolom apa pun yang masuk akal bagi Anda.
- utf8mb4_unicode_ci untuk perbandingan 'kehidupan nyata' yang bagus, tampaknya termasuk yang ini. K=k=Ķ=ķ
- utf8mb4_unicode_ci untuk perbandingan yang lebih sederhana. Khususnya tidak ada kombinasi 2 karakter yang cocok dengan pengkodean 1 karakter. Pelipatan case dan aksen stripping memang terjadi. K=k=Ķ=ķ
- utf8mb4_bin membabi buta memeriksa bit. Tidak ada case folding, dll. K k Ķ semuanya tidak sama.
utf8mb4_latvian_ci sedikit berbeda:K=k tetapi tidak sama dengan =ķ . Ada susunan khusus lainnya untuk bahasa lain (kebanyakan Eropa Barat).
K
. Anda disebut "FULLWIDTH LATIN CAPITAL LETTER K", sehingga cukup beralasan jika dibandingkan dengan K
Latin .