sql >> Database >  >> RDS >> Mysql

Hoe een taal te identificeren in de utf-8-kolom in MySQL

Laten we beginnen met een tabel die ik hier heb geplaatst . Er staat bijvoorbeeld dat E381yy de utf8-codering is voor Hiragana en E383yy Katakana (Japans) is. (Kanji is een andere zaak.)

Om te zien of een utf8-kolom Katakana bevat, doe je zoiets als

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

Cyrillisch zou kunnen zijn

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

Chinees is een beetje lastig, maar dit kan meestal werk voor Chinees (en Kanji?):

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

(Ik ga je titel wijzigen om het zoekwoord 'tekenset' te vermijden.)

West-Europa (inclusief, maar niet beperkt tot, Frans) C[23] , Turks (ongeveer, en enkele anderen) (C4|C59) , Grieks:C[EF] , Hebreeuws:D[67] , Indiaas, enz:E0 , Arabisch/Farsi/Perzisch/Urdu:D[89AB] . (Altijd voorvoegsel ^(..)* .

U zult merken dat deze niet per se erg specifiek zijn. Dit komt door overlappingen. Brits Engels en Amerikaans Engels kunnen niet worden onderscheiden, behalve door spelling van een paar woorden. Verschillende letters met accenten worden in Europa op verschillende manieren gedeeld. India heeft veel verschillende tekensets:Devanagari, Bengali, Gurmukhi, Gujarati, enz.; deze zijn waarschijnlijk te onderscheiden, maar het zou meer onderzoek vergen. Ik denk dat Arabisch/Farsi/Perzisch/Urdu één tekenset delen.

Nog wat:

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

Dus, voor DEVANAGARI, '^(..)*E0A[45]'




  1. is er een manier om alle mislukte sql-instructies in orakel 10g te loggen?

  2. Opnieuw hulp nodig over het samenvoegen van tabellen

  3. Hoe de volgende waarde van de SQL Server-reeks in Entity Framework te krijgen?

  4. Unieke identifier (guid) als primaire sleutel in databaseontwerp