2010-11-18 16 views
2

Ben SQL Server 2008 R2 dev üzerine değilim, sunucu varsayılan harmanlama
SEÇ 'éÉâÂàÀëËçæà' HARMANLA Latin1_General_CS_AS
veyaNeden açık COLLATE veritabanı harmanlamasını geçersiz kılmıyor?

SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI 

çıkışları

  • eEaAaAeEc

    SSMS yürütme Cyrillic_General_CI_AS

    mı? Cyrillic_General_CI_AS

  • varsayılan harmanlama ile bir (veritabanının/kullanım dbName) veritabanında Varsayılan harmanlama Latin1_General_CI_AS

Neden ile veritabanı üzerinde

  • éÉâÂàÀëËçæà?

  • cevap

    6

    Sorgularınızdaki bu karakter değişmezleri, ilk önce veritabanının oluşturulduğu harmanlama altında varchar dizelerine dönüştürülür ve sonra collation cast etkin olur.

    sadakatle temsil edildiği bu tür karakter sabiti geçmek ve tüm karakterleri emin olmak istiyorsanız, bu nvarchar değişmezleri olarak geçmek daha iyidir:

    create database CollTest collate Cyrillic_General_CI_AS 
    go 
    use CollTest 
    go 
    SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CS_AS 
    SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI 
    go 
    SELECT N'éÉâÂàÀëËçæà' COLLATE Latin1_General_CS_AS 
    SELECT N'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI 
    go 
    

    Çıktı:

    ----------- 
    eEaAaAeEc?a 
    
    (1 row(s) affected) 
    
    
    ----------- 
    eEaAaAeEc?a 
    
    (1 row(s) affected) 
    
    
    ----------- 
    éÉâÂàÀëËçæà 
    
    (1 row(s) affected) 
    
    
    ----------- 
    éÉâÂàÀëËçæà 
    
    (1 row(s) affected) 
    
    1

    this character table'a göre Cyrillic_General_CI_AS, æ topluluğunu içermiyor. Bu, seçmiş olduğunuz ifadelerinizde bulunanların yerine gerçekten varsayılanları kullanıyorsanız, neden bir ? göründüğünü açıklar.

    İlgili konular