এই প্রশ্নটি ডেটাবেসের সাথে এতটা সম্পর্কিত নয় তবে ইউনিকোড হ্যান্ডলিং এবং নিয়মের উপর বেশি।
Https://docs.microsoft.com/en-us/sql/t-sql/statements/windows-collation-name-transact-sql লাতিন 1_ জেনারেল_100_CS_AS এর উপর ভিত্তি করে : "কোডেশন লাতিন 1 সাধারণ অভিধান বাছাইয়ের নিয়ম এবং কোড পৃষ্ঠাতে মানচিত্র ব্যবহার করে 1252 "যুক্ত সিএস = কেস সংবেদনশীল এবং এএস = অ্যাকসেন্ট সংবেদনশীল সহ।
উইন্ডোজ কোড পৃষ্ঠা 1252 এবং ইউনিকোডের মধ্যে ম্যাপিং ( http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT ) আমরা যে সমস্ত অক্ষর নিয়ে কাজ করছি তার জন্য একই মান দেখায় (ম্যাক্রোন সহ ই বাদ দিয়ে) এটি মাইক্রোসফ্ট ম্যাপিংয়ে বিদ্যমান নেই, সুতরাং এটি এই ক্ষেত্রে কী করে তা কোনও ধারণা নেই), তাই আমরা আপাতত ইউনিকোড সরঞ্জাম এবং পরিভাষায় মনোনিবেশ করতে পারি।
প্রথমে আপনার সমস্ত স্ট্রিংয়ের জন্য আমরা কীভাবে আচরণ করছি তা অবগতভাবে আমাদের জানতে দিন:
0065 LATIN SMALL LETTER E
0041 LATIN CAPITAL LETTER A
00E9 LATIN SMALL LETTER E WITH ACUTE
0042 LATIN CAPITAL LETTER B
00EB LATIN SMALL LETTER E WITH DIAERESIS
0043 LATIN CAPITAL LETTER C
00E8 LATIN SMALL LETTER E WITH GRAVE
0044 LATIN CAPITAL LETTER D
00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
0045 LATIN CAPITAL LETTER E
0113 LATIN SMALL LETTER E WITH MACRON
0046 LATIN CAPITAL LETTER F
ইউনিকোড কলেশন অ্যালগরিদম এখানে বর্ণিত হয়েছে: https://www.unicode.org/report/tr10/
বিভাগের ১.৩ দেখুন "প্রাসঙ্গিক সংবেদনশীলতা" যা ব্যাখ্যা করে যে বাছাই করা অন্যের পরে কেবল একটি চরিত্রের উপর নির্ভর করতে পারে না কারণ কিছু নিয়ম প্রসঙ্গে সংবেদনশীল।
এই পয়েন্টগুলি 1.8 তে নোট করুন:
কোলেশন স্ট্রিংয়ের সম্পত্তি নয়। কোলেশন অর্ডার সাধারণভাবে সংক্ষিপ্তকরণ বা সাবস্ট্রিং অপারেশনের অধীনে সংরক্ষণ করা হয় না।
ডিফল্টরূপে, অ্যালগরিদম তিনটি সম্পূর্ণ কাস্টমাইজযোগ্য স্তর ব্যবহার করে। ল্যাটিন লিপির জন্য, এই স্তরগুলি মোটামুটিভাবে এর সাথে মিলিত হয়:
alphabetic ordering
diacritic ordering
case ordering.
তবে নিজে থেকেই অ্যালগরিদমটি কিছুটা ঘন। এর সূত্রটি হ'ল: সংক্ষেপে বলা হয়েছে, ইউনিকোড কোলিশন অ্যালগরিদম একটি ইনপুট ইউনিকোড স্ট্রিং এবং একটি কোলেশন এলিমেন্ট টেবিল নিয়ে থাকে, যেখানে অক্ষরের জন্য ম্যাপিং ডেটা থাকে। এটি একটি বাছাই কী উত্পন্ন করে, যা স্বাক্ষরযুক্ত 16-বিট পূর্ণসংখ্যার অ্যারে ray দু'বার বা তার বেশি উত্পন্ন উত্পাদিত কীগুলি তারপরে তৈরি হওয়া স্ট্রিংগুলির মধ্যে সঠিক তুলনা করার জন্য বাইনারি-তুলনা করা যেতে পারে।
আপনি এখানে নির্দিষ্ট ল্যাটিন বাছাইয়ের নিয়মগুলি দেখতে পারেন: http://developer.mimer.com/colifications/charts/latin.htm
বা আরও সরাসরি এবং বিশেষত এমএস এসকিউএল:
http://collation-charts.org/mssql/mssql এর জন্য। 0409.1252.Latin1_General_CS_AS.html
জন্য e
চরিত্র এটা দেখায়:
ই ই é É è È ê Ê ë Ë Ë
col1
কোড পৃষ্ঠা 1252 এ ē বিদ্যমান নেই ব্যতীত অর্ডার করার সময় এটি আপনার ফলাফলগুলি ব্যাখ্যা করে, সুতরাং এটির সাথে এটি কী করে আমার একেবারে কোনও ধারণা নেই।
বা যদি আমরা হাতে হাতে ইউনিকোড অ্যালগরিদম করি, তবে http://www.unicode.org/Public/UCA/latest/allkeys.txt এ DUCET- র কীগুলি ব্যবহার করে :
পদক্ষেপ 1: সাধারণীকরণ ফর্ম ডি, তাই প্রতিটি ক্ষেত্রে হয়ে যায়:
e => U+0065
é => U+0065 U+0301
ë => U+0065 U+0308
è => U+0065 U+0300
ê => U+0065 U+0302
ē => U+0065 U+0304
পদক্ষেপ 2, কোলেশন অ্যারে উত্পাদন করুন (ফাইলটিতে দেখুন allkeys.txt
)
e => [.1D10.0020.0002]
é => [.1D10.0020.0002] [.0000.0024.0002]
ë => [.1D10.0020.0002] [.0000.002B.0002]
è => [.1D10.0020.0002] [.0000.0025.0002]
ê => [.1D10.0020.0002] [.0000.0027.0002]
ē => [.1D10.0020.0002] [.0000.0032.0002]
পদক্ষেপ 3, ফর্ম বাছাই কী (প্রতিটি স্তরের জন্য, প্রতিটি কোলেশন অ্যারের ভিতরে প্রতিটি মান নিয়ে যান, তারপরে 0000 ডিলিমিটেটর হিসাবে রাখুন এবং পরবর্তী স্তরের জন্য আবার শুরু করুন)
e => 1D10 0000 0020 0000 0002
é => 1D10 0000 0020 0024 0000 0002 0002
ë => 1D10 0000 0020 002B 0000 0002 0002
è => 1D10 0000 0020 0025 0000 0002 0002
ê => 1D10 0000 0020 0027 0000 0002 0002
ē => 1D10 0000 0020 0032 0000 0002 0002
পদক্ষেপ 4, বাছাই কীগুলির সাথে তুলনা করুন (প্রতিটি মানের একের পর এক সাধারণ বাইনারি তুলনা): চতুর্থ মানগুলি সমস্তকে বাছাই করার জন্য যথেষ্ট, সুতরাং চূড়ান্ত ক্রমটি হয়ে যায়:
e
é
è
ê
ë
ē
অর্ডার দেওয়ার জন্য একই পদ্ধতিতে col2
:
পদক্ষেপ 1: এনএফডি
eA => U+0065 U+0041
éB => U+0065 U+0301 U+0042
ëC => U+0065 U+0308 U+0043
èD => U+0065 U+0300 U+0044
êE => U+0065 U+0302 U+0045
ēF => U+0065 U+0304 U+0046
পদক্ষেপ 2: কোলেশন অ্যারে
eA => [.1D10.0020.0002] [.1CAD.0020.0008]
éB => [.1D10.0020.0002] [.0000.0024.0002] [.1CC6.0020.0008]
ëC => [.1D10.0020.0002] [.0000.002B.0002] [.1CE0.0020.0008]
èD => [.1D10.0020.0002] [.0000.0025.0002] [.1CF5.0020.0008]
êE => [.1D10.0020.0002] [.0000.0027.0002] [.1D10.0020.0008]
ēF => [.1D10.0020.0002] [.0000.0032.0002] [.1D4B.0020.0008]
পদক্ষেপ 3: ফর্ম বাছাই কী
eA => 1D10 1CAD 0000 0020 0020 0000 0002 0008
éB => 1D10 1CC6 0000 0020 0024 0020 0000 0002 0002 0008
ëC => 1D10 1CE0 0000 0020 002B 0020 0000 0002 0002 0008
èD => 1D10 1CF5 0000 0020 0025 0020 0000 0002 0002 0008
êE => 1D10 1D10 0000 0020 0027 0020 0000 0002 0002 0008
ēF => 1D10 1D4B 0000 0020 0032 0020 0000 0002 0002 0008
পদক্ষেপ 4: বাছাই কীগুলির সাথে তুলনা করুন: দ্বিতীয় মানটি তাদের সকলকে বাছাই করার জন্য যথেষ্ট এবং এটি ইতিমধ্যে ক্রমবর্ধমান ক্রম হিসাবে রয়েছে, সুতরাং চূড়ান্ত ক্রমটি আসলে:
eA
éB
ëC
èD
êE
ēF
আপডেট : সলোমন রুটজকির তৃতীয় কেস যুক্ত করা, যা নতুন নিয়মকে সক্ষম করে এমন জায়গার কারণে জটিলতর (আমি "অজানা মামলা" নির্বাচন করেছি):
পদক্ষেপ 1, এনএফডি:
è 1 => U+0065 U+0300 U+0020 U+0031
ê 5 => U+0065 U+0302 U+0020 U+0035
e 2 => U+0065 U+0020 U+0032
é 4 => U+0065 U+0301 U+0020 U+0034
ē 3 => U+0065 U+0304 U+0020 U+0033
ë 6 => U+0065 U+0308 U+0020 U+0036
পদক্ষেপ 2, কোলেশন অ্যারে উত্পাদন করুন:
è 1 => [.1D10.0020.0002] [.0000.0025.0002] [*0209.0020.0002] [.1CA4.0020.0002]
ê 5 => [.1D10.0020.0002] [.0000.0027.0002] [*0209.0020.0002] [.1CA8.0020.0002]
e 2 => [.1D10.0020.0002] [*0209.0020.0002] [.1CA5.0020.0002]
é 4 => [.1D10.0020.0002] [.0000.0024.0002] [*0209.0020.0002] [.1CA7.0020.0002]
ē 3 => [.1D10.0020.0002] [.0000.0032.0002] [*0209.0020.0002] [.1CA6.0020.0002]
ë 6 => [.1D10.0020.0002] [.0000.002B.0002] [*0209.0020.0002] [.1CA9.0020.0002]
পদক্ষেপ 3, ফর্ম বাছাই কী:
è 1 => 1D10 0209 1CA4 0000 0020 0025 0020 0020 0000 0002 0002 0002 0002
ê 5 => 1D10 0209 1CA8 0000 0020 0027 0020 0020 0000 0002 0002 0002 0002
e 2 => 1D10 0209 1CA5 0000 0020 0020 0020 0000 0002 0002 0002
é 4 => 1D10 0209 1CA7 0000 0020 0024 0020 0020 0000 0002 0002 0002 0002
ē 3 => 1D10 0209 1CA6 0000 0020 0032 0020 0020 0000 0002 0002 0002 0002
ë 6 => 1D10 0209 1CA9 0000 0020 002B 0020 0020 0000 0002 0002 0002 0002
পদক্ষেপ 4, বাছাই কীগুলির সাথে তুলনা করুন:
মূলত তৃতীয় মানটি অর্ডার নির্ধারণ করে, এবং এটি বাস্তবে কেবলমাত্র শেষ অঙ্কের উপর নির্ভর করে তাই আদেশটি হওয়া উচিত:
è 1
e 2
ē 3
é 4
ê 5
ë 6
ইউনিকোড সংস্করণ সম্পর্কে সলোমন রুটজির মন্তব্যের ভিত্তিতে দ্বিতীয় আপডেট ।
আমি allkeys.txt
এই সময়ে সর্বশেষতম ইউনিকোড সংস্করণ সম্পর্কিত ডেটা ব্যবহার করেছি , এটি সংস্করণ 10.0
যদি আমাদের পরিবর্তে ইউনিকোড 5.1 গ্রহণ করা প্রয়োজন , এটি হ'ল :
http://www.unicode.org/Public/UCA/5.1.0/allkeys.txt
আমি কেবল যাচাই করেছি, উপরের সমস্ত অক্ষরের জন্য, পরিবর্তনের অ্যারেগুলি পরিবর্তে নিম্নলিখিতটি রয়েছে:
e => [.119D.0020.0002.0065]
é => [.119D.0020.0002.0065] [.0000.0032.0002.0301]
ë => [.119D.0020.0002.0065] [.0000.0047.0002.0308]
è => [.119D.0020.0002.0065] [.0000.0035.0002.0300]
ê => [.119D.0020.0002.0065] [.0000.003C.0002.0302]
ē => [.119D.0020.0002.0065] [.0000.005B.0002.0304]
এবং:
eA => [.119D.0020.0002.0065] [.1141.0020.0008.0041]
éB => [.119D.0020.0002.0065] [.0000.0032.0002.0301] [.1157.0020.0008.0042]
ëC => [.119D.0020.0002.0065] [.0000.0047.0002.0308] [.116F.0020.0008.0043]
èD => [.119D.0020.0002.0065] [.0000.0035.0002.0300] [.1182.0020.0008.0044]
êE => [.119D.0020.0002.0065] [.0000.003C.0002.0302] [.119D.0020.0008.0045]
ēF => [.119D.0020.0002.0065] [.0000.005B.0002.0304] [.11D5.0020.0008.0046]
এবং:
è 1 => [.119D.0020.0002.0065] [.0000.0035.0002.0300] [*0209.0020.0002.0020] [.1138.0020.0002.0031]
ê 5 => [.119D.0020.0002.0065] [.0000.003C.0002.0302] [*0209.0020.0002.0020] [.113C.0020.0002.0035]
e 2 => [.119D.0020.0002.0065] [*0209.0020.0002.0020] [.1139.0020.0002.0032]
é 4 => [.119D.0020.0002.0065] [.0000.0032.0002.0301] [*0209.0020.0002.0020] [.113B.0020.0002.0034]
ē 3 => [.119D.0020.0002.0065] [.0000.005B.0002.0304] [*0209.0020.0002.0020] [.113A.0020.0002.0033]
ë 6 => [.119D.0020.0002.0065] [.0000.0047.0002.0308] [*0209.0020.0002.0020] [.113D.0020.0002.0036]
যা নীচের বাছাইয়ের কীগুলিতে গণনা করুন:
e => 119D 0000 0020 0000 0002 0000 0065
é => 119D 0000 0020 0032 0000 0002 0002 0000 0065 0301
ë => 119D 0000 0020 0047 0000 0002 0002 0000 0065 0308
è => 119D 0000 0020 0035 0000 0002 0002 0000 0065 0300
ê => 119D 0000 0020 003C 0000 0002 0002 0000 0065 0302
ē => 119D 0000 0020 005B 0000 0002 0002 0000 0065 0304
এবং:
eA => 119D 1141 0000 0020 0020 0000 0002 0008 0000 0065 0041
éB => 119D 1157 0000 0020 0032 0020 0000 0002 0002 0008 0000 0065 0301 0042
ëC => 119D 116F 0000 0020 0047 0020 0000 0002 0002 0008 0000 0065 0308 0043
èD => 119D 1182 0000 0020 0035 0020 0000 0002 0002 0008 0000 0065 0300 0044
êE => 119D 119D 0000 0020 003C 0020 0000 0002 0002 0008 0000 0065 0302 0045
ēF => 119D 11D5 0000 0020 005B 0020 0000 0002 0002 0008 0000 0065 0304 0046
এবং:
è 1 => 119D 0209 1138 0000 0020 0035 0020 0020 0000 0002 0002 0002 0002 0000 0065 0300 0020 0031
ê 5 => 119D 0209 113C 0000 0020 003C 0020 0020 0000 0002 0002 0002 0002 0000 0065 0302 0020 0035
e 2 => 119D 0209 1139 0000 0020 0020 0020 0000 0002 0002 0002 0000 0065 0020 0032
é 4 => 119D 0209 113B 0000 0020 0032 0020 0020 0000 0002 0002 0002 0002 0000 0065 0301 0020 0034
ē 3 => 119D 0209 113A 0000 0020 005B 0020 0020 0000 0002 0002 0002 0002 0000 0065 0304 0020 0033
ë 6 => 119D 0209 113D 0000 0020 0047 0020 0020 0000 0002 0002 0002 0002 0000 0065 0308 0020 0036
যা আবার এই তিনটি সাজানো ফলাফল দেয়:
e
é
è
ê
ë
ē
এবং
eA
éB
ëC
èD
êE
ēF
এবং
è 1
e 2
ē 3
é 4
ê 5
ë 6
VARCHAR
(অর্থাত্ ইউনিকোডবিহীন) ডেটার জন্য, যা এখানে ব্যবহৃত হচ্ছে না। যে কারণেē
চরিত্রটি ঠিক কাজ করে। 2) "কোলেশন-চার্ট" তথ্যটি কিছুটা পুরানো। এটি এই সংযোগের পূর্ববর্তী সংস্করণের জন্য এবং তারা ২০০৯ সাল থেকে কোনও পোস্ট করেনি 3) এখানে ইউনিকোড সংস্করণটি অবশ্যই সর্বশেষ নয় (সংস্করণ 10)।_100_
সিরিজ Collations, এসকিউএল 2008 সাথে আসা তাই এই ইউনিকোড 5.0 বা 5.1 হবে: unicode.org/standard/versions/#TUS_Earlier_Versions