Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 13630|Răspunde: 0

[Bacșișuri] Vizualizați instrucțiunile SQL în formatul de codare SQLserver și regulile de colare Sqlserver

[Copiază linkul]
Postat pe 27.10.2016 12:50:16 | | | |
SELECTEAZĂ COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')
Iată rezultatele interogărilor:
936 Chineză simplificată GBK
950 Chinezesc Tradițional BIG5
437 Engleză SUA/Canada
932 Japonezi
949 Coreeană
866 Rusă
65001 unicode UFT-8




Când am instalat SQL SERVER 2008, pentru că am ales instalarea implicită, am creat-oCând este o bază de date, regula implicită de sortare aleasă de server este o regulă de SQL_Latin1_General_CP1_CI_AS de compilare, astfel încât la inserarea textului în tabelul de date, acesta nu va fi afișat normal, totul cu "? în schimb.
Apoi, când creăm o bază de date, trebuie să specificăm manual o regulă de colație, care poate fi selectată ca Chinese_PRC_CI_AS de colectare, așa cum se arată în figura de mai jos





Reguli de sortare:
Regulile de sortare folosite în SQLSEVER2005 sunt SQL_Latin1_General_CP1_CI_AS, nu cele trei reguli care pot afișa corect caracterele chinezești simplificate:
Chinese_PRC_BIN,
Chinese_PRC_CI_AS,
Chinese_PRC_CS_AS。
Aruncă o privire la explicația MS despre colation: Collation Rules Control Physical Storage of Strings in SQL Server 2005. Regulile de colare specifică modelul de biți care reprezintă fiecare caracter și regulile pentru stocarea și compararea utilizării caracterelor.
Adică, în SQLSERVER, colarea este de fapt codificarea caracterelor.
Prin executarea următoarei instrucțiuni în analizorul de interogări, poți obține toate regulile de colare suportate de SQL SERVER.
selectează * de la ::fn_helpcollations()
Numele de colare constă din două părți, prima parte se referă la setul de caractere suportat de această colare.
De exemplu: Chinese_PRC_CS_AI_WS
Prima jumătate se referă la setul de caractere UNICODE și Chinese_PRC_refers la regulile de sortare pentru caracterul chinezesc simplificat UNICODE.
A doua jumătate a colațiunii este semnificația sufixului:
_BIN Sortare binară
_CI(CS) Indiferent dacă este sensibil la majuscule, CI nu este sensibil, iar CS este sensibil
_AI (AS) Dacă pentru a distinge între accente, AI nu distinge, AS distinge
_KI(KS) Dacă pentru a distinge între tipurile de pseudonime, KI nu, KS distinge
_WI(WS) nu este distins pe lățime, WS nu este diferențiat
Sensibil la majuscule: Selectează această opțiune dacă vrei comparații pentru a trata literele mari și mici ca fiind inegale.
Distinge între accente: Selectează această opțiune dacă vrei comparații pentru a trata literele accentuate și neaccentuate ca fiind inegale. Dacă selectezi această opțiune, comparația tratează și literele cu accente diferite ca fiind inegale.
Distinge Kana: Selectează această opțiune dacă vrei comparația pentru a trata silabele Katakana și Hiraka Day ca fiind inegale.
Diferențierea lățimii: Selectează această opțiune dacă vrei ca comparația să trateze caracterele de jumătate de lățime și de lățime completă ca fiind inegale.
După ce înțelegem regulile de colectare în SQLSERVER, pot fi trase următoarele concluzii pentru problema de mai sus:
1. Modificarea bazei de date de utilizatori SQLSERVER pentru a suporta colectarea seturi de caractere chinezești.
2: Pentru afișarea caracterelor chinezești??, dar nu doriți să schimbați regulile de sortare din baza de date și doriți să afișați corect caracterele chinezești, se recomandă utilizarea tuturor câmpurilor de tip Unicode din design, adică acele tipuri de câmpuri care încep cu N, cum ar fi nChar, nVarchar, pentru a reda corect caracterele chinezești.
3: Dacă nu doriți să schimbați regula de colare sau tipul câmpului, atunci trebuie să schimbați instrucțiunea SQL, iar pentru toate caracterele chinezești, trebuie să adăugați și N în față pentru a o afișa corect. Vă rugăm să consultați următoarele două afirmații pentru metode specifice:
Interogare: selectează * din tb_Cust unde Prenume=N'Wang'
Inserează: inserează valorile tb_Cust(Prenume, NumeFamilie, Sex) (N'Wang', N'Xinhao', N'Male')
Notă: Pentru viitor, va fi mai dificil să modifici regula de colectare la nivel de server după SQLSERVER2000 și este necesară reconstruirea bazei de date principale.

În prezent, pentru bazele de date care au fost deja create, putem schimba și metoda de colectare în pagina de opțiuni din fereastra de proprietăți a bazei de date, astfel încât, atunci când inserăm text în tabelul de date, nu vor apărea mesaje de eroare!





Precedent:SQL determină dacă o coloană conține caractere chinezești sau engleze
Următor:SQL determină dacă o coloană conține caractere chinezești sau engleze
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com