|
|
Postitatud 27.10.2016 12:50:16
|
|
|
|

SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage') Siin on päringu tulemused:
936 Hiina lihtsustatud GBK 950 Hiina traditsioonilist BIG5 437 USA/Kanada inglise keel 932 jaapanlased 949 Korea 866 vene 65001 unicode UFT-8
SQL SERVER 2008 paigaldamisel, kuna valisime vaikimisi paigalduse, lõime selleAndmebaasi puhul valib server vaikimisi sorteerimisreegli SQL_Latin1_General_CP1_CI_AS võrdlemise reegli, nii et teksti lisamisel andmetabelisse ei kuvata seda tavapäraselt, kõik "? selle asemel.
Seejärel, kui loome andmebaasi, peame käsitsi määrama võrdlusreegli, mida saab valida Chinese_PRC_CI_AS kolleerimisena, nagu alloleval joonisel näidatud
Sorteerimisreeglid:
SQLSEVER2005-s kasutatavad sorteerimisreeglid on SQL_Latin1_General_CP1_CI_AS, mitte kolm sorteerimisreeglit, mis suudavad lihtsustatud hiina märke õigesti kuvada:
Chinese_PRC_BIN,
Chinese_PRC_CI_AS,
Chinese_PRC_CS_AS。
Vaata MS-i selgitust kolleerimise kohta: Collation Rules Control Physical Storage of Strings in SQL Server 2005. Võrdlemisreeglid määravad iga tähemärgi bitimustri ning reeglid tähemärkide kasutamise salvestamiseks ja võrdlemiseks.
See tähendab, et SQLSERVERis on võrdlemine tegelikult märgikodeerimine.
Käivitades järgmise lause päringuanalüsaatoris, saad kõik SQL SERVERi toetatud kolleerimisreeglid.
Vali * ::fn_helpcollations()
Kolleerimise nimi koosneb kahest osast, esimene osa viitab selle kollatsiooni poolt toetatud tähemärgikogumikule.
Näiteks: Chinese_PRC_CS_AI_WS
Esimene pool viitab UNICODE märgistikule ja Chinese_PRC_refers lihtsustatud hiina märgi UNICODE sorteerimisreeglitele.
Teises pooles on järelliite tähendus:
_BIN Binaarne sorteerimine
_CI(CS) Kas see on väiketähtede tundlik, CI ei ole tundlik ja CS on tundlik
_AI (AS) Kas aktsente eristada, AI ei tee vahet, AS eristab
_KI(KS) Kas pseudonüümitüüpe eristada, KI ei erista, KS eristab
_WI(WS) ei ole laiuse järgi eristatud, WS ei ole eristatav
Tähetundlik: Vali see valik, kui soovid võrrelda, et suur- ja väiketähti ei ole võrdsed.
Erista aktsente: Vali see valik, kui soovid võrrelda, et käsitleda rõhutud ja rõhutamata tähti kui ebavõrdseid. Kui valid selle valiku, käsitleb võrdlus ka erinevate aktsenditega tähti ebavõrdsetena.
Erista Kana keelt: Vali see valik, kui soovid võrrelda Katakana ja Hiraka päeva silpe ebavõrdsetena.
Laiuse diferentseerimine: Vali see valik, kui soovid, et võrdlus käsitleks pool- ja täislaiuse tähemärke ebavõrdsetena.
Pärast SQLSERVERI võrdlusreeglite mõistmist saab ülaltoodud probleemi puhul teha järgmised järeldused:
1. Muuda SQLSERVERI kasutajate andmebaasi, et toetada hiina tähemärkide võrdlemist.
2: Hiina tähemärkide kuvamiseks??, kuid ei soovi muuta sorteerimisreegleid andmebaasis ja soovida hiina tähemärke õigesti kuvada, soovitatakse kasutada kõiki disainis olevaid Unicode'i tüüpe, st neid väljatüüpe, mis algavad tähega N, nagu nChar, nVarchar, et hiina tähemärgid õigesti kuvada.
3: Kui sa ei soovi muuta võrdlemisreeglit ega välja tüüpi, siis pead muutma SQL-lauset ning kõigi hiina märkide puhul tuleb lisada ette ka N, et see õigesti kuvada. Palun vaadake järgmisi kahte väidet konkreetsete meetodite kohta:
Päring: vali * tb_Cust, kus FirstName=N'Wang'
Lisa: sisesta tb_Cust(Eesnimi, Perekonnanimi, Sugu) väärtused (N'Wang',N'Xinhao',N'Mele')
Märkus: Tulevikus on serveritasandi võrdlemisreegli muutmine pärast SQLSERVER2000 keerulisem ning peamise andmebaasi taastamine on vajalik.
Praegu, kui andmebaasid on juba loodud, saame muuta võrdlemismeetodit ka andmebaasi omaduste aknas valikute lehel, nii et teksti lisamisel andmetabelisse ei tule veateadeid!
|
Eelmine:SQL määrab, kas veerg sisaldab hiina või inglise tähemärkeJärgmine:SQL määrab, kas veerg sisaldab hiina või inglise tähemärke
|