sql >> Databáze >  >> RDS >> Mysql

Jak identifikovat jazyk ve sloupci utf-8 v MySQL

No, začněme tabulkou, kterou jsem vložil zde . Říká například, že E381yy je kódování utf8 pro Hiragana a E383yy je Katakana (japonsky). (Kanji je jiná věc.)

Chcete-li zjistit, zda sloupec utf8 obsahuje Katakana, udělejte něco jako

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

Cyrilice může být

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

Čínština je trochu složitější, ale může to být obvykle práce pro Číňany (a Kanji?):

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

(Chystám se změnit váš Titulek, abych se vyhnul klíčovému slovu 'znaková sada'.)

Západní Evropa (včetně, ale nikoli výhradně, francouzštiny) C[23] , turečtina (přibližně a některé další) (C4|C59) , řečtina:C[EF] , hebrejština:D[67] , indická atd.:E0 , arabština/farsí/perština/urdština:D[89AB] . (Vždy předponu ^(..)* .

Můžete si všimnout, že tyto nemusí být nutně příliš konkrétní. Je to kvůli překryvům. Britskou angličtinu a americkou angličtinu nelze rozlišit jinak než hláskováním několika slov. Několik písmen s diakritikou je v Evropě sdíleno různými způsoby. Indie má mnoho různých znakových sad:dévanágarí, bengálština, gurmukhí, gudžarátština atd.; tyto jsou pravděpodobně rozlišitelné, ale chtělo by to více výzkumu. Myslím, že arabština/farsí/perština/urdština sdílí jednu znakovou sadu.

Ještě něco:

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

Takže pro DEVANAGARI:'^(..)*E0A[45]'




  1. Uživatelem definovaná proměnná MySQL v klauzuli WHERE

  2. Salesforce SOQL z Javy

  3. Připojení SQL serveru k databázi Java

  4. Použití Mongodb a Mysql v jednom projektu