Sie verwenden utf8mb4_unicode_ci
für Ihre Spalten, sodass bei der Prüfung die Groß- und Kleinschreibung nicht beachtet wird. Wenn Sie utf8mb4_bin
verwenden Stattdessen werden die Emojis 🌮 und 🌶 korrekt als unterschiedliche Buchstaben identifiziert.
Mit WEIGHT_STRING
Sie können die Werte abrufen, die zum Sortieren und Vergleichen für die Eingabezeichenfolge verwendet werden.
Wenn Sie schreiben:
SELECT
WEIGHT_STRING ('🌮' COLLATE 'utf8mb4_unicode_ci'),
WEIGHT_STRING ('🌶' COLLATE 'utf8mb4_unicode_ci')
Dann können Sie sehen, dass beide 0xfffd
sind . In Unicode-Zeichensätzen
sie sagen:
Wenn Sie schreiben:
SELECT
WEIGHT_STRING('🌮' COLLATE 'utf8mb4_bin'),
WEIGHT_STRING('🌶' COLLATE 'utf8mb4_bin')
Sie erhalten ihre Unicode-Werte 0x01f32e
und 0x01f336
stattdessen.
Für andere Buchstaben wie Ä
, Á
und A
die gleich sind, wenn Sie utf8mb4_unicode_ci
verwenden , der Unterschied ist zu sehen in:
SELECT
WEIGHT_STRING ('Ä' COLLATE 'utf8mb4_unicode_ci'),
WEIGHT_STRING ('A' COLLATE 'utf8mb4_unicode_ci')
Diese werden dem Gewicht 0x0E33
zugeordnet
Ä: 00C4 ; [.0E33.0020.0008.0041][.0000.0047.0002.0308] # LATIN CAPITAL LETTER A WITH DIAERESIS; QQCM
A: 0041 ; [.0E33.0020.0008.0041] # LATIN CAPITAL LETTER A
Laut:Unterschied zwischen utf8mb4_unicode_ci und utf8mb4_unicode_520_ci Sortierungen in MariaDB/MySQL?
die für utf8mb4_unicode_ci
verwendeten Gewichtungen basieren auf UCA 4.0.0
Da die Emojis dort nicht erscheinen, ist die zugeordnete Gewichtung 0xfffd
Wenn Sie Vergleiche und Sortierungen ohne Berücksichtigung der Groß-/Kleinschreibung für normale Buchstaben zusammen mit Emoji benötigen, wird dieses Problem mit utf8mb4_unicode_520_ci
gelöst :
SELECT
WEIGHT_STRING('🌮' COLLATE 'utf8mb4_unicode_520_ci'),
WEIGHT_STRING('🌶' COLLATE 'utf8mb4_unicode_520_ci')
es werden auch unterschiedliche Gewichte für diese Emojis 0xfbc3f32e
angezeigt und 0xfbc3f336
.