|
|
Opublikowano 27.10.2016 12:50:16
|
|
|
|

WYBIERZ COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage') Oto wyniki zapytania:
936 chińskie uproszczone GBK 950 chińskich tradycyjnych BIG5 437 amerykańsko-kanadyjski angielski 932 Japończycy 949 Koreańczyk 866 Rosyjski 65001 unicode UFT-8
Podczas instalacji SQL SERVER 2008, ponieważ wybraliśmy domyślną instalację, utworzyliśmy jąGdy baza danych, domyślną regułą sortowania wybraną przez serwer jest reguła sortowania SQL_Latin1_General_CP1_CI_AS, tak że przy wstawianiu tekstu do tabeli danych nie będzie ona wyświetlana normalnie, wszystko z "? zamiast tego.
Następnie, tworząc bazę danych, musimy ręcznie określić regułę kolacji, którą można wybrać jako Chinese_PRC_CI_AS kolacji, jak pokazano na poniższym rysunku
Zasady sortowania:
Zasady sortowania używane w SQLSEVER2005 są SQL_Latin1_General_CP1_CI_AS, a nie trzy reguły sortowania, które poprawnie wyświetlają uproszczone znaki chińskie:
Chinese_PRC_BIN,
Chinese_PRC_CI_AS,
Chinese_PRC_CS_AS。
Spójrz na wyjaśnienie kolacji MS: Collation Rules Control Physical Storage of Strings in SQL Server 2005. Reguły sortowania określają wzór bitowy reprezentujący każdy znak oraz reguły przechowywania i porównywania użycia znaków.
To znaczy, w SQLSERVER sortacja to faktycznie kodowanie znaków.
Wykonując następujące zdanie w analizatorze zapytań, możesz uzyskać wszystkie reguły kolacji obsługiwane przez SQL SERVER.
Wybierz * z ::fn_helpcollations()
Nazwa kolacji składa się z dwóch części, pierwsza część odnosi się do zestawu znaków wspieranego przez tę sortację.
Na przykład: Chinese_PRC_CS_AI_WS
Pierwsza połowa odnosi się do zestawu znaków UNICODE, a Chinese_PRC_refers do reguł sortowania uproszczonego chińskiego znaku UNICODE.
Druga połowa zestawu to znaczenie sufiksu:
_BIN Sortowanie binarne
_CI(CS) Niezależnie od tego, czy jest to wielka litera, CI nie jest wrażliwe, a CS jest wrażliwe
_AI (AS) Czy rozróżniać akcenty, AI nie rozróżnia, AS rozróżnia
_KI(KS) Czy rozróżniać typy pseudonimów, KI nie robi, KS rozróżnia
_WI(WS) nie jest rozróżniana szerokością, WS nie jest rozróżniana
Wielka litera: Wybierz tę opcję, jeśli chcesz porównać, aby duże i małe litery były nierówne.
Rozróżnij akcenty: Wybierz tę opcję, jeśli chcesz porównać litery z akcentem i bez akcentu jako nierówne. Jeśli wybierzesz tę opcję, porównanie również traktuje litery z różnymi akcentami jako nierówne.
Rozróżnij Kana: Wybierz tę opcję, jeśli chcesz, aby porównanie potraktowało sylaby Katakany i Dnia Hiraki jako nierówne.
Różnicowanie szerokości: Wybierz tę opcję, jeśli chcesz, aby porównanie traktowało znaki półszerokości i pełnej szerokości jako nierówne.
Po zrozumieniu reguł kolacji w SQLSERVER, można wyciągnąć następujące wnioski dotyczące powyższego problemu:
1. Zmodyfikuj bazę danych użytkowników SQLSERVER w celu obsługi zbiorczości chińskich zestawów znaków.
2: Dla wyświetlania znaków chińskich??, ale nie chcesz zmieniać reguł sortowania w bazie danych i chcesz poprawnie wyświetlać znaki chińskie, zaleca się używanie wszystkich pól typu Unicode w projekcie, czyli tych pol zaczynających się na N, takich jak nChar, nVarchar, aby poprawnie wyświetlać znaki chińskie.
3: Jeśli nie chcesz zmieniać reguły sortowania ani typu pola, musisz zmienić instrukcję SQL, a dla wszystkich znaków chińskich musisz dodać N przed nim, aby poprawnie się wyświetlała. Prosimy o odniesienie do poniższych dwóch stwierdzeń dotyczących konkretnych metod:
Zapytanie: wybierz * z tb_Cust gdzie FirstName=N'Wang'
Wstaw: wstaw wartości tb_Cust(Imię, Nazwisko, Płeć) (N'Wang', N'Xinhao', N'Male')
Uwaga: W przyszłości modyfikowanie reguły zbiorczej na poziomie serwera po SQLSERVER2000 będzie trudniejsze, a także konieczne jest odbudowanie głównej bazy danych.
Obecnie, dla baz danych, które już zostały utworzone, możemy również zmienić metodę sortowania na stronie opcji w oknie właściwości bazy, tak aby przy wstawianiu tekstu do tabeli danych nie pojawiały się żadne komunikaty o błędach!
|
Poprzedni:SQL określa, czy kolumna zawiera znaki chińskie czy angielskieNastępny:SQL określa, czy kolumna zawiera znaki chińskie czy angielskie
|