Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como pesquisar um texto que contenha emojis?


Eu tive uma situação em que a migração de banco de dados de um servidor para outro fez com que o emoji desaparecesse. Então eu tive que encontrar todas as linhas na tabela original que continham caracteres utf8 (emoji) altos.

Esta consulta funcionou como esperado:
SELECT field FROM `table` WHERE HEX(field) RLIKE "^(..)*F.";

antes de fazer qualquer coisa, verifique se você está usando utf8mb4 em seu banco de dados, tabelas E conexão:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+