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

Sådan identificeres et sprog i utf-8 kolonne i MySQL

Nå, lad os starte med en tabel, jeg sætter ind her . Der står for eksempel, at E381yy er utf8-kodningen for Hiragana, og E383yy er Katakana (japansk). (Kanji er en anden sag.)

For at se, om en utf8-kolonne indeholder Katakana, skal du gøre noget lignende

WHERE HEX(col) REGEXP '^(..)*E383'
 

Kyrillisk kan være

WHERE HEX(col) REGEXP '^(..)*D[0-4]'
 

Kinesisk er lidt tricky, men det kan normalt arbejde for kinesisk (og Kanji?):

WHERE HEX(col) REGEXP '^(..)*E[4-9A]'
 

(Jeg vil ændre din titel for at undgå søgeordet 'tegnsæt'.)

Vesteuropa (herunder, men ikke begrænset til, fransk) C[23] , tyrkisk (ca. og nogle andre) (C4|C59) , græsk:C[EF] , hebraisk:D[67] , indisk osv.:E0 , arabisk/farsi/persisk/urdu:D[89AB] . (Altid præfiks med ^(..)* .

Du bemærker måske, at disse ikke nødvendigvis er meget specifikke. Dette er på grund af overlapninger. Britisk engelsk og amerikansk engelsk kan ikke skelnes undtagen ved at stave nogle få ord. Flere bogstaver med accent deles på forskellige måder i Europa. Indien har mange forskellige karaktersæt:Devanagari, Bengali, Gurmukhi, Gujarati osv.; disse er sandsynligvis skelnelige, men det ville kræve mere forskning. Jeg tror, ​​at arabisk/farsi/persisk/urdu deler ét tegnsæt.

Lidt mere:

| SAMARITAN | E0A080 | E0A0BE | | DEVANAGARI | E0A480 | E0A5BF | | BENGALI | E0A681 | E0A7BB | | GURMUKHI | E0A881 | E0A9B5 | | GUJARATI | E0AA81 | E0ABB1 | | ORIYA | E0AC81 | E0ADB1 | | TAMIL | E0AE82 | E0AFBA | | TELUGU | E0B081 | E0B1BF | | KANNADA | E0B282 | E0B3B2 | | MALAYALAM | E0B482 | E0B5BF | | SINHALA | E0B682 | E0B7B4 | | THAI | E0B881 | E0B99B | | LAO | E0BA81 | E0BB9D | | TIBETAN | E0BC80 | E0BF94 |

Så for DEVANAGARI, '^(..)*E0A[45]'




  1. 25 Microsoft Access-genveje for at spare tid i tabeller i dataarkvisning

  2. Effekt af NOLOCK-tip i SELECT-sætninger

  3. Forsøger at bygge en statisk databaseklasse, som jeg kan få adgang til fra enhver funktion uden for klassen

  4. Hvordan kan jeg slutte mig til flere borde i symfony2?