Trouver l'index de l'alphabet coréen (tout caractère Unicode) dans Word (tout mot Unicode) dans le server SQL

J'ai l'obligation de searchr des personnes par leur nom. Ici, les noms des peuples peuvent être en anglais, en coréen ou en chinois. Pour cela, j'ai utilisé Like condition de search sur la base de Name comme ci-dessous:

 select * from [MyTable] where Name like N'%t%' 

La déclaration ci-dessus donne à tous les users qui contient la lettre t . Mais cela ne fonctionne pas avec les langues coréennes ou chinoises. Comme si je search avec la lettre coréenne alors il est supposé donner tous les noms qui contiennent cette lettre comme **정수연, 재훈아이팟, 정원혁 테스트 7** . J'ai essayé les moyens suivants, mais cela donne zéro résultat

 select * from [MyTable] where Name like N'%ㅈ%' - No Results select PATINDEX(N'%ㅈ%',N'정수연(Mohan)') - giving value as ZERO select Charindex(N'ㅈ',N'정수연') - giving value as ZERO 

Est-il possible de find les lettres des alphabets d'autres langues dans le server SQL?

Je sais comment find l'existence de l'alphabet dans une autre langue en mots C # en utilisant des techniques d'enencoding mais pas dans le server SQL. S'il vous plaît aidez-moi à cet égard.

Merci d'avance.

EDIT pour le code C #

 public static ssortingng DecomposeSyllabels(ssortingng unicodeSsortingng) { try { //Consonant consonant only used ssortingng[] JLT = { "ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" }; // Only used a collection of neutral ssortingng[] JVT = { "ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ" }; // Initial and coda consonants used in ssortingng[] JTT = { "", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ", "ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" }; double SBase = 0xAC00; long SCount = 11172; int TCount = 28; int NCount = 588; ssortingng syllables = ssortingng.Empty; foreach (char c in unicodeSsortingng) { double SIndex = (int)c - SBase; if (0 > SIndex || SIndex >= SCount) { syllables = syllables + c; continue; } int LIndex = (int)Math.Floor(SIndex / NCount); int VIndex = (int)(Math.Floor((SIndex % NCount) / TCount)); int TIndex = (int)(SIndex % TCount); syllables = syllables + (JLT[LIndex] + JVT[VIndex] + JTT[TIndex]); } return syllables; } catch { return unicodeSsortingng; } } 

Vous devrez décomposer les syllabes coréennes et les stocker dans une colonne séparée dans votre database SQL (comme ㅈㅓ ㅇㅅ ㅜㅇ ㅕㄴ pour 정수연). Je vous suggère d'écrire une petite application personnalisée qui parsing votre database, décompose toutes les syllabes coréennes, et enregistre les résultats dans une colonne séparée.

MODIFIER

Voici un code Python qui décomposera les syllabes Hangul:

 #!/usr/local/bin/python # -*- coding: utf8 -*- import codecs, sys, os, math JLT="ㄱ,ㄲ,ㄴ,ㄷ,ㄸ,ㄹ,ㅁ,ㅂ,ㅃ,ㅅ,ㅆ,ㅇ,ㅈ,ㅉ,ㅊ,ㅋ,ㅌ,ㅍ,ㅎ".split(",") JTT=",ㄱ,ㄲ,ㄱㅅ,ㄴ,ㄴㅈ,ㄴㅎ,ㄷ,ㄹ,ㄹㄱ,ㄹㅁ,ㄹㅂ,ㄹㅅ,ㄹㅌ,ㄹㅍ,ㄹㅎ,ㅁ,ㅂ,ㅂㅅ,ㅅ,ㅆ,ㅇ,ㅈ,ㅊ,ㅋ,ㅌ,ㅍ,ㅎ".split(",") JVT="ㅏ,ㅐ,ㅑ,ㅒ,ㅓ,ㅔ,ㅕ,ㅖ,ㅗ,ㅘ,ㅙ,ㅚ,ㅛ,ㅜ,ㅝ,ㅞ,ㅟ,ㅠ,ㅡ,ㅢ,ㅣ".split(",") SBase=0xAC00 SCount=11172 TCount=28 NCount=588 def HangulName(a): b=a.decode('utf8') sound='' for i in b: cp=ord(i) SIndex = cp - SBase if (0 > SIndex or SIndex >= SCount): # "Not a Hangul Syllable" pass LIndex = int(math.floor(SIndex / NCount)) VIndex = int(math.floor((SIndex % NCount) / TCount)) TIndex = int(SIndex % TCount) sound=sound+(JLT[LIndex] + JVT[VIndex] + JTT[TIndex]).lower() return sound print HangulName("정수연") 

dda $ python test.py
ㅈㅓ ㅇㅅ ㅜㅇ ㅕㄴ