Chybí vám bod o CHARACTER SET
a COLLATION
. CHARACTER SET
je sbírka různých postav. COLLATION
říká, zda se mají znaky považovat za rovnocenné -- myslím A
a a
-- různé znaky, ale ošetřeno pro ORDER BY
a WHERE =
, atd. jako stejné.
mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci |
+-----------------------------------+
| 1 |
+-----------------------------------+
Takže v utf8_unicode_ci (nebo utf8mb4_unicode_ci) jsou tyto dva znaky považovány za "rovné".
"Equal" je test pro UNIQUE
klíče.
Nastavte COLLATION
pro sloupec na cokoliv, co pro vás má smysl.
- utf8mb4_unicode_ci pro dobré srovnání ze skutečného života, zjevně včetně tohoto. K=k=Ķ=ķ
- utf8mb4_unicode_ci pro jednodušší srovnání. Zejména žádné 2znakové kombinace neodpovídají 1znakovému kódování. Dochází ke skládání pouzder a odstraňování zvýraznění. K=k=Ķ=ķ
- utf8mb4_bin slepě kontroluje bity. Žádné skládání pouzdra atd. K k Ķ ķ jsou všechny nestejné.
utf8mb4_latvian_ci je trochu jiný:K=k, ale nerovná se Ķ=ķ . Existují další specializované porovnávání pro jiné jazyky (většinou západoevropské).
Váš K
se nazývá "VELKÉ PÍSMENO K V PLNÉ ŠÍŘCE LATINSKÉ PÍSMENO", takže je docela rozumné, že se rovná latinskému K
.