ich eine Tabelle mit varchar Wert haben, der Textwerte mit Emojis speichern muss:Befund Werte Fall unsensibel mit Emojis
CREATE TABLE `my_table` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`value` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `value_idx` (`value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Jetzt muss ich wählt auf dieser Tabelle tun, um alle Werte zu finden mit dem Präfix beginnen. Bei Auswahlen muss die Groß-/Kleinschreibung beachtet werden und auch Emoji müssen übereinstimmen. Bisher fand ich 4 Optionen, die alle Abwägungen haben:
I utf8mb4_unicode_ci Sortierung verwenden können und tun wählt wie
select * from my_table where value like 'prefix%'
Es werden alle Werte Wind beginnend mit dem Präfix seine Zeichen Fall ignorieren, aber wird nichts finden, wenn Präfix Emojis enthält
ich Sammlung einstellen meine wählt werden Werte finden, wenn Präfix Emojis enthält, utf8mb4_bin und wird aber Groß- und Kleinschreibung
sein
kann ich
select * from my_table where LOWER(value) like 'prefix%'
tun und es wird Fall unsensibel und mit Emojis funktionieren, aber nicht Index
verwenden Und schließlich kann ich alle Werte in Kleinbuchstaben speichern und utf8mb4_bin Sortierung verwenden, aber Speichern in klein~~POS=TRUNC ist auch der Trade-off
gibt es eine Lösung, die mich „wie“ wählt ignorieren Fall des Präfix zu tun erlauben würde, und ermöglicht Emojis in Präfix zu haben?
UPD: Ich habe keine Probleme mit der Speicherung von Emojis, ich habe Probleme mit ihnen mit „gefällt mir“ zu finden, wählen Sie Groß- und Kleinschreibung Sortierungs halten
Mögliche Duplikate von [Speichern von Android Emoji in MySQL] (http://StackOverflow.com/Questions/468474739/storing-android-emoji-in-Mysql) –
absolut nicht, diese Frage ist über Probleme beim Speichern von Emojis. Ich habe solche Probleme nicht, weil ich utf8mb4 verwende, das 4 Bytes Unicode-Zeichen speichern kann –