Je mist het punt over CHARACTER SET
en COLLATION
. EEN CHARACTER SET
is een verzameling van verschillende karakters. Een COLLATION
zegt of de tekens als gelijk moeten worden behandeld -- denk aan A
en a
-- verschillende karakters, maar behandeld voor ORDER BY
en WHERE =
, etc als hetzelfde.
mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci |
+-----------------------------------+
| 1 |
+-----------------------------------+
Dus in utf8_unicode_ci (of utf8mb4_unicode_ci) worden die twee tekens als "gelijk" beschouwd.
"Gelijk" is de test voor UNIQUE
toetsen.
Stel de COLLATION
in voor de kolom tot wat voor jou logisch is.
- utf8mb4_unicode_ci voor goede 'real life'-vergelijkingen, blijkbaar inclusief deze. K=k=Ķ=ķ
- utf8mb4_unicode_ci voor meer eenvoudige vergelijkingen. In het bijzonder komen geen 2-tekencombinaties overeen met 1-tekencoderingen. Het vouwen van de behuizing en het strippen van accenten komt voor. K=k=Ķ=ķ
- utf8mb4_bin controleert blindelings de bits. Geen hoesjes vouwen, enz. K k Ķ ķ zijn allemaal ongelijk.
utf8mb4_latvian_ci is een beetje anders:K=k maar niet gelijk aan Ķ=ķ . Er zijn andere gespecialiseerde sorteringen voor andere talen (meestal West-Europees).
Uw K
heet "VOLLEDIGE LATIJNSE HOOFDLETTER K", dus het is redelijk dat het vergelijkbaar is met Latijnse K
.