2015-06-05 4 views
5

Meine Datenbank, Tabellen, Felder verwenden utf8mb4. Ich kann gut Emojisymbole in einigen Feldern speichern. Jetzt versuche ich zu fragen wie:MySql gibt falsche Ergebnisse für Emoji-Zeichenfolgen zurück

SELECT * FROM user WHERE name = ''

Erstaunlich, das Ergebnis sind Datensätze mit Feldnamen unterschiedlich wie ''

Sieht aus wie mysql Emoji Strings passt durch ihre Längen, aber nicht Inhalte.

Irgendeine Idee, um dieses Problem zu beheben? Danke vielmals.

+0

Dies könnte Ihnen helfen: http://stackoverflow.com/questions/7814293/how-to-insert-utf-8-mb4-characteremoji-in-ios5-in-mysql –

+0

Danke Stuart für sehr schnelle Antwort. Mein Problem ist ganz anders. Ich kann alle Zeichenfolgen mit Emojisymbolen sehr gut speichern, durchsuchen und extrahieren. Nur Problem, sie bei der Abfrage abzugleichen. – Tony

+0

gleiche Situation hier. – z33

Antwort

0

Wie lautet die Sortierfolge auf Ihrem Tisch? Da Sie utf8mb4 verwenden, sollte es utf8mb4_unicode_ci sein. Sonst noch und Sie werden wahrscheinlich das Problem, das Sie sehen, bekommen - schlimmer, Sie könnten sogar mehrere Datensätze zurückkommen.

die Sortierreihenfolge Verwendung einstellen:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
+0

Ich habe das gleiche Problem wie das OP, und ich habe 'collation_connection',' collation_database' und 'collation_server' auf' utf8mb4_unicode_ci' gesetzt. SELECT-Abfragen scheinen in der Tat nur mit der Anzahl von Emoji übereinzustimmen, und nicht mit dem tatsächlichen Inhalt (der, um es gelinde auszudrücken, ungerade ist). – ACJ

0

Versuchen Sie folgendes:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; 
1

einfach diesen Befehl tat an meinen Tisch:

ALTER CONVERT TABLE name TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

das ist alles. Das Ergebnis ist dann korrekt.