|
|
Yayınlandı 27.10.2016 12:50:16
|
|
|
|

SELECT: COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage') İşte sorgu sonuçları:
936 Çin Basitleştirilmiş GBK 950 Çin Geleneksel BIG5 437 ABD/Kanada İngilizcesi 932 Japonlar 949 Kore 866 Rusça 65001 unicode UFT-8
SQL SERVER 2008'i kurarken, varsayılan kurulumu seçtiğimiz için onu oluşturdukVeritabanı olduğunda, sunucu tarafından seçilen varsayılan sıralama kuralı SQL_Latin1_General_CP1_CI_AS bir toplama kuralıdır; böylece veri tablosuna metin eklendiğinde normal şekilde gösterilmez ve hepsi "? bunun yerine.
Daha sonra, bir veritabanı oluştururken, aşağıdaki şekilde gösterildiği gibi Chinese_PRC_CI_AS derleme olarak seçilebilen bir toplama kuralı manuel olarak belirtmemiz gerekir
Sıralama kuralları:
SQLSEVER2005'ta kullanılan sıralama kuralları SQL_Latin1_General_CP1_CI_AS, basitleştirilmiş Çin karakterlerini doğru gösterebilen üç sıralama kuralı değil:
Chinese_PRC_BIN,
Chinese_PRC_CI_AS,
Chinese_PRC_CS_AS。
MS'in derleme açıklamasına bir göz atın: Collation Rules Control Physical Storage of Strings in SQL Server 2005. Toplama kuralları, her karakteri temsil eden bit desenini ve karakter kullanımını depolama ve karşılaştırma kurallarını belirler.
Yani, SQLSERVER'da derleme aslında karakter kodlamasıdır.
Sorgu analizöründe aşağıdaki ifadeyi çalıştırarak, SQL SERVER tarafından desteklenen tüm derleme kurallarını elde edebilirsiniz.
*'den seçin ::fn_helpcollations()
Toplama adı iki bölümden oluşur; birinci bölüm, bu derlemenin desteklediği karakter setini ifade eder.
Örneğin: Chinese_PRC_CS_AI_WS
İlk yarısı UNICODE karakter setini, Chinese_PRC_refers ise basitleştirilmiş Çince karakter UNICODE için sıralama kurallarını ifade eder.
Toplamanın ikinci yarısı ekin anlamıdır:
_BIN İkili sıralama
_CI(CS) Küçük küçük ama küçük harf hassasiyetli olup olmadığı, CI hassas değil ve CS hassas olup olmadığı
_AI (AS) Aksanlar arasında ayrım yapıp yapılmadığına dair yapay zeka ayırt etmez, AS ayırt eder
_KI(KS) Takma ad tipleri arasında ayrım yapıp yapılmadığına dair KI ayırt etmez, KS ayırt eder
_WI(WS) genişlik açısından ayırt edilmez, WS ayırt edilmez
Küçük harf hassasiyeti: Karşılaştırmalarda büyük ve küçük harfleri eşit olarak görmeyecek şekilde kullanmak istiyorsanız bu seçeneği seçin.
Aksanları ayırt edin: Vurgulu ve vurgusuz harfleri eşit olarak değerlendirmek için karşılaştırma yapmak istiyorsanız bu seçeneği seçin. Bu seçeneği seçerseniz, karşılaştırma farklı aksanlara sahip harfleri de eşit sayımıyor.
Kana'yı Ayırt Et: Katakana ve Hiraka Günü hecelerini eşit olmayan olarak değerlendirmek için bu seçeneği seçin.
Genişlik farklılaştırması: Karşılaştırmanın yarım genişlik ve tam genişlikli karakterleri eşit görmemesini istiyorsanız bu seçeneği seçin.
SQLSERVER'daki derleme kuralları anlaşıldıktan sonra, yukarıdaki problem için aşağıdaki sonuçlar çıkarılabilir:
1. Çince karakter setlerinin derlenmesini destekleyecek şekilde SQLSERVER kullanıcı veritabanını değiştirin.
2: Çin karakterlerinin gösterilmesi??, ancak veritabanındaki sıralama kurallarını değiştirmek istememek ve Çin karakterlerini doğru göstermek istiyorsanız, tasarımdaki tüm Unicode tür alanlarını, yani N ile başlayan alan türlerini, örneğin nChar, nVarchar'ı kullanmanız önerilir ki Çin karakterleri doğru şekilde gösterilsin.
3: Eğer derleme kuralını veya alan türünü değiştirmek istemiyorsanız, SQL ifadesini değiştirmeniz gerekir ve tüm Çince karakterler için doğru şekilde gösterilmesi için önüne N eklemeniz gerekir. Belirli yöntemler için lütfen aşağıdaki iki ifadeye bakınız:
Sorgu: tb_Cust içinden * seç, burada FirstName=N'Wang'
Ekleme: tb_Cust(FirstName,Soyadım,Cinsiyet) değerleri (N'Wang',N'Xinhao',N'Male') ekle
Not: Gelecekte, SQLSERVER2000 sonrası sunucu düzeyinde derleme kuralını değiştirmek daha zahmetli olacak ve ana veritabanını yeniden oluşturmak gerekmektedir.
Şu anda, zaten oluşturulmuş veritabanları için, veritabanının özellikler penceresindeki seçenekler sayfasında derleme yöntemini de değiştirebiliyoruz, böylece veri tablosuna metin eklendiğinde hata mesajı çıkmaz!
|
Önceki:SQL, bir sütunun Çince mi yoksa İngilizce mi içerdiğini belirlerÖnümüzdeki:SQL, bir sütunun Çince mi yoksa İngilizce mi içerdiğini belirler
|