Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso cercare un testo che contiene emoji?

Ho avuto una situazione in cui la migrazione db da un server all'altro ha causato la scomparsa delle emoji. Quindi ho dovuto trovare tutte le righe nella tabella originale che contenevano caratteri utf8 (emoji) alti.

Questa query ha funzionato come previsto:

SELECT field FROM `table` WHERE HEX(field) RLIKE "^(..)*F.";

prima di fare qualsiasi cosa controlla se stai usando utf8mb4 sul tuo db, tabelle E connessione:

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 |
+--------------------------+--------------------+