VALITSE COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage') Tässä ovat kyselytulokset:
936 kiinalainen yksinkertaistettu GBK 950 kiinalaista perinteistä BIG5-mallia 437 Yhdysvaltain/Kanadan englanti 932 japanilaiset 949 Korean 866 venäläinen 65001 unicode UFT-8
Kun asensimme SQL SERVER 2008:n, koska valitsimme oletusasennuksen, loimme senTietokannassa palvelimen valitsema oletuslajittelusääntö on SQL_Latin1_General_CP1_CI_AS kokoamissääntö, joten kun tekstiä lisätään datataulukkoon, sitä ei näytetä normaalisti, kaikki "? sen sijaan.
Kun luomme tietokannan, meidän täytyy manuaalisesti määritellä kokoamissääntö, joka voidaan valita Chinese_PRC_CI_AS kokoamiseksi, kuten alla olevassa kuvassa on esitetty
Lajittelusäännöt:
SQLSEVER2005:ssa käytetyt lajittelusäännöt ovat SQL_Latin1_General_CP1_CI_AS, eivät kolme lajittelusääntöä, jotka voivat näyttää yksinkertaistetut kiinalaiset merkit oikein:
Chinese_PRC_BIN,
Chinese_PRC_CI_AS,
Chinese_PRC_CS_AS。
Katso MS:n selitys collationista: Collation Rules Control Physical Storage of Strings in SQL Server 2005. Vertailusäännöt määrittelevät bittikuvion, joka edustaa kutakin merkkiä, sekä säännöt merkkien käytön tallentamiseen ja vertailuun.
Toisin sanoen SQLSERVERissä kokoaminen on itse asiassa merkkikoodausta.
Suorittamalla seuraavan lauseen kyselyanalysaattorissa saat kaikki SQL SERVERin tukemat vertailusäännöt.
Valitse * ::fn_helpcollations()
Kokouksen nimi koostuu kahdesta osasta, joista ensimmäinen viittaa tämän kokouksen tukemaan merkistöön.
Esimerkiksi: Chinese_PRC_CS_AI_WS
Ensimmäinen puolisko viittaa UNICODE-merkistöön ja Chinese_PRC_refers yksinkertaistetun kiinalaisen UNICODE-merkin lajittelusääntöihin.
Vertailun toinen puolisko on päätteen merkitys:
_BIN Binäärinen lajittelu
_CI(CS) Onko se kirjainkoon herkkä, CI ei herkkä ja CS herkkä
_AI (AS) Erotellaanko aksentit toisistaan, tekoäly ei erota toisistaan, AS erottaa
_KI(KS) Erotellaanko pseudonyymityypit toisistaan, KI ei erota, KS erottaa
_WI(WS) ei eroteta leveyttä, WS ei ole erotettu
Kirjainkoon herkkyys: Valitse tämä vaihtoehto, jos haluat vertailun käsittelevän isot ja pienet kirjaimet eriarvoisina.
Erottele aksentit: Valitse tämä vaihtoehto, jos haluat vertailla korostetut ja painottomat kirjaimet eriarvoisina. Jos valitset tuon vaihtoehdon, vertailu käsittelee myös eri aksentteja omaavia kirjaimia epätasa-arvoisina.
Erota Kana: Valitse tämä vaihtoehto, jos haluat vertailla Katakana- ja Hiraka-päivän tavuja epätasa-arvoisina.
Leveyden erottelu: Valitse tämä vaihtoehto, jos haluat vertailun käsittelevän puolileveitä ja täysleveitä merkkejä eriarvoisina.
Kun SQLSERVERin vertailusäännöt on ymmärretty, voidaan tehdä seuraavat johtopäätökset yllä olevasta ongelmasta:
1. Muokkaa SQLSERVER-käyttäjätietokantaa tukemaan kiinalaisten merkistöjen kokoamista.
2: Kun kiinalaiset merkit näytetään??, mutta et halua muuttaa lajittelusääntöjä tietokannassa ja halutaan näyttää kiinalaiset merkit oikein, suositellaan käyttämään kaikkia Unicode-tyyppikenttiä suunnittelussa, eli niitä kenttätyyppejä, jotka alkavat N:llä, kuten nChar, nVarchar, kiinalaisten merkkien näyttämiseksi oikein.
3: Jos et halua muuttaa kokoamissääntöä tai kenttätyyppiä, sinun täytyy muuttaa SQL-lausetta, ja kaikille kiinalaisille merkeille sinun täytyy myös lisätä N eteen, jotta se näkyy oikein. Katso seuraavat kaksi lausetta saadaksesi tarkat menetelmät:
Kysely: valitse * tb_Cust, missä FirstName=N'Wang'
Lisää: lisää tb_Cust(Etunimi, Sukunimi, Sukupuoli) arvot (N'Wang', N'Xinhao', N'Mies')
Huomautus: Tulevaisuudessa palvelintason kokoamissäännön muokkaaminen on hankalampaa SQLSERVER2000 jälkeen, ja on tarpeen rakentaa master-tietokanta uudelleen.
Tällä hetkellä jo luoduille tietokannoille voimme myös muuttaa kokoamismenetelmää tietokannan ominaisuusikkunan asetuksissa, jotta tekstiä lisättäessä datataulukkoon ei tule virheilmoituksia!
|