Miałem sytuację, w której migracja db z jednego serwera na drugi spowodowała zniknięcie emoji. Musiałem więc znaleźć wszystkie wiersze w oryginalnej tabeli, które zawierały znaki z wysokim utf8 (emotikonami).
To zapytanie zadziałało zgodnie z oczekiwaniami:
SELECT field FROM `table` WHERE HEX(field) RLIKE "^(..)*F.";
przed zrobieniem czegokolwiek sprawdź, czy używasz utf8mb4 na swojej bazie danych, tabelach ORAZ połączeniu:
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 |
+--------------------------+--------------------+