VÄLJ COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage') Här är sökresultaten:
936 Kinesiska förenklade GBK 950 Traditionell kinesisk BIG5 437 amerikansk/kanadensisk engelska 932 japanska 949 Korean 866 ryska 65001 unicode UFT-8
När vi installerade SQL SERVER 2008, eftersom vi valde standardinstallationen, skapade vi denNär man är databas är standardsorteringsregeln som servern väljer en SQL_Latin1_General_CP1_CI_AS sorteringsregel, så att när text infogas i datatabellen visas den inte normalt, allt med "? istället.
När vi sedan skapar en databas behöver vi manuellt specificera en kollationsregel, som kan väljas som Chinese_PRC_CI_AS sortering, som visas i figuren nedan
Sorteringsregler:
Sorteringsreglerna som används i SQLSEVER2005 är SQL_Latin1_General_CP1_CI_AS, inte de tre sorteringsregler som kan visa förenklade kinesiska tecken korrekt:
Chinese_PRC_BIN,
Chinese_PRC_CI_AS,
Chinese_PRC_CS_AS。
Ta en titt på MS:s förklaring av kollation: Collation Rules Control Physical Storage of Strings in SQL Server 2005. Kollationsregler specificerar bitmönstret som representerar varje tecken och reglerna för lagring och jämförelse av teckenanvändning.
Det vill säga, i SQLSERVER är sorteringen faktiskt teckenkodningen.
Genom att köra följande sats i frågeanalysatorn kan du få alla sorteringsregler som stöds av SQL SERVER.
Välj * från ::fn_helpcollations()
Kollationsnamnet består av två delar, den första delen avser teckenuppsättningen som stöds av denna sortering.
Till exempel: Chinese_PRC_CS_AI_WS
Den första halvan avser UNICODE-teckenuppsättningen och Chinese_PRC_refers till sorteringsreglerna för det förenklade kinesiska tecknet UNICODE.
Den andra halvan av sorteringen är betydelsen av suffixet:
_BIN Binärsortering
_CI(CS) Oavsett om det är kasuskänsligt, är CI inte känsligt och CS är känsligt
_AI (AS) Om man ska skilja mellan accenter, AI skiljer inte åt, AS skiljer på
_KI(KS) Om man ska skilja mellan pseudonymtyper, KI gör det inte, KS skiljer på
_WI(WS) är inte breddsärskiljande, WS är inte differentierad, WS är inte differentierad
Kasus och -känslig: Välj detta alternativ om du vill ha jämförelser för att behandla versaler och små bokstäver som ojämna.
Skilj mellan accenter: Välj detta alternativ om du vill ha jämförelser för att behandla accentuerade och obetonade bokstäver som ojämna. Om du väljer det alternativet behandlar jämförelsen också brev med olika accenter som ojämna.
Särskilj Kana: Välj detta alternativ om du vill att jämförelsen ska behandla Katakana- och Hiraka-dagsstavelserna som ojämna.
Bredddifferentiering: Välj detta alternativ om du vill att jämförelsen ska behandla halvbredds- och helbreddstecken som ojämna.
Efter att ha förstått sorteringsreglerna i SQLSERVER kan följande slutsatser dras för ovanstående problem:
1. Modifiera SQLSERVER-användardatabasen för att stödja sortering av kinesiska teckenuppsättningar.
2: För kinesiska tecken som visas??, men inte vill ändra sorteringsreglerna i databasen och vill visa kinesiska tecken korrekt, rekommenderas att använda alla Unicode-typfält i designen, det vill säga de fälttyper som börjar med N, såsom nChar, nVarchar, för att visa kinesiska tecken korrekt.
3: Om du inte vill ändra sorteringsregeln eller fälttypen måste du ändra SQL-satsen, och för alla kinesiska tecken måste du också lägga till N framför för att visa det korrekt. Vänligen se följande två påståenden för specifika metoder:
Fråga: välj * från tb_Cust där FirstName=N'Wang'
Infoga: infoga tb_Cust(Förnamn, Efternamn, Kön) värden (N'Wang', N'Xinhao', N'Male')
Notera: För framtiden kommer det att vara mer besvärligt att modifiera servernivå-kollationsregeln efter SQLSERVER2000, och det är nödvändigt att bygga om huvuddatabasen.
För närvarande kan vi för databaser som redan har skapats också ändra sorteringsmetoden på optionssidan i databasens egenskapsfönster, så att när text infogas i datatabellen kommer det inte att finnas några felmeddelanden!
|