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

Hvordan vil jeg søge efter tekst, der indeholder emojis?

Jeg har haft en situation, hvor db-migrering fra en server til en anden fik emoji til at forsvinde. Så jeg var nødt til at finde alle rækker i den originale tabel, som indeholdt høje utf8-tegn (emoji).

Denne forespørgsel fungerede som forventet:

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

før du gør noget, tjek om du bruger utf8mb4 på din db, tabeller OG forbindelse:

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


  1. Sådan opretter du transaktionsreplikering

  2. Script til at gemme varbinære data på disken

  3. Indsæt den samme faste værdi i flere rækker

  4. LPAD() Funktion i Oracle