Du mangler pointen med CHARACTER SET
og COLLATION
. Et CHARACTER SET
er en samling af forskellige karakterer. En COLLATION
siger, om tegnene skal behandles som lige -- tænk A
og a
-- forskellige tegn, men behandlet for ORDER BY
og WHERE =
osv. som værende det samme.
mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci |
+-----------------------------------+
| 1 |
+-----------------------------------+
Så i utf8_unicode_ci (eller utf8mb4_unicode_ci), anses disse to tegn for at være "lige".
"Lige" er testen for UNIQUE
nøgler.
Indstil COLLATION
for kolonnen til hvad der giver mening for dig.
- utf8mb4_unicode_ci til gode sammenligninger fra det virkelige liv, tilsyneladende også denne. K=k=Ķ=ķ
- utf8mb4_unicode_ci for mere enkeltsindede sammenligninger. Især ingen 2-tegnskombinationer matcher 1-tegns-kodninger. Sagsfoldning og accentstribning forekommer. K=k=Ķ=ķ
- utf8mb4_bin tjekker blindt bitsene. Ingen kassefoldning osv. K k Ķ ķ er alle ulige.
utf8mb4_latvian_ci er lidt anderledes:K=k men ikke lig med Ķ=ķ . Der er andre specialiserede sammenstillinger for andre sprog (for det meste vesteuropæiske).
Din K
kaldes "FULLWIDTH LATIN CAPITAL LETTER K", så det er ret rimeligt, at det sammenlignes med latinsk K
.