Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie würde ich nach Text suchen, der Emojis enthält?

Ich hatte eine Situation, in der die DB-Migration von einem Server zu einem anderen dazu führte, dass Emoji verschwand. Also musste ich alle Zeilen in der Originaltabelle finden, die hohe UTF8-Zeichen (Emoji) enthielten.

Diese Abfrage hat wie erwartet funktioniert:

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

Bevor Sie irgendetwas tun, überprüfen Sie, ob Sie utf8mb4 auf Ihrer Datenbank, Ihren Tabellen UND Ihrer Verbindung verwenden:

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