2010-01-05 28 views
7

kullanarak SQL_Latin1_General_CP1_CI_AS nasıl derlenir? E-postadaki kayıtları filtrelemek istiyorum. Bu operasyon eşit yılında "SQL_Latin1_General_CP1_CI_AS" ve "Latin1_General_CI_AS" arasındaki harmanlama çakışma çözülemiyor IN operatörü

hata

aşağıdaki bana verir

SELECT * FROM #temp WHERE email NOT IN (SELECT email FROM Customer) 

.

IN yerine eşit işleç (=) varsa harmanlamayı kullanabilirim. Ama burada Collate kullanarak bana sözdizimi hatası veriyor. E-posta (Müşteri DAN e SEÇ) SQL_Latin1_General_CP1_CI_AS

harmanlamak DEĞİL İÇİNDE #temp GELEN

SEÇ * Nasıl bu çözebilirsiniz. Canlı db olduğu için bırakamıyorum ve tabloları yeniden oluşturamıyorum. #temp tabloda

Veri SQL Server 2000 ve Müşteri tablosu, SQL Server 2005

teşekkürler olduğunu.

cevap

15
... 
NOT IN (SELECT email COLLATE SQL_Latin1_General_CP1_CI_AS AS email FROM Customer) 

Harmanlama biti, temel olarak sütun adını izler.

Ya da bu (İstediğin hangisi bağlıdır): En DB SQL_Latin1_General_CP1_CI_AS ise

SELECT * FROM #temp WHERE email collate SQL_Latin1_General_CP1_CI_AS NOT IN (SELECT email FROM Customer) 

Son olarak, seçeneklerden biri varsayılan ayara zorlamak için ...COLLATE Database_Default... kullanmaktır.