2015-06-05 3 views
5

Моя база данных, таблицы, поля используют utf8mb4. Я могу хранить символы emoji в некоторых полях. Теперь я пытаюсь запросить такие как:MySql возвращает неверные результаты для строк emoji

SELECT * FROM user WHERE имя = «»

Удивительный результат являются записи с именами полей различны, такие как «»

Похоже MySQL соответствует Emoji строк, их длины, но не содержание.

Любая идея исправить эту проблему? Большое спасибо.

+0

Это может вам помочь: http://stackoverflow.com/questions/7814293/how-to-insert-utf-8-mb4-characteremoji-in-ios5-in-mysql –

+0

Спасибо Stuart за очень быстрый ответ. Моя проблема совсем другая. Я могу хранить, просматривать и извлекать очень хорошо все строки с символами emoji. Только проблема их сопоставления при запросе. – Tony

+0

такой же положение дел здесь. – z33

ответ

0

Что такое порядок сортировки на вашем столе? Поскольку вы используете utf8mb4, он должен быть utf8mb4_unicode_ci. Что-нибудь еще, и вы, вероятно, столкнетесь с проблемой, которую видите, тем хуже, что вы даже можете вернуть несколько записей.

Чтобы установить использование порядка сортировки:

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

У меня такая же проблема, как у ОП, и у меня есть 'collation_connection',' collation_database' и 'collation_server', которые установлены на' utf8mb4_unicode_ci'. Запросы SELECT кажутся действительно соответствующими только количеству эможи, а не фактическому содержимому (что, по меньшей мере, нечетно). – ACJ

0

Попробуйте это:

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

Просто сделал эту команду к моему столику:

ALTER TABLE имя_таблицы CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

все. тогда результат будет правильным.

Смежные вопросы