2010-01-05 10 views
7

Chcę filtrować rekordy w polu "E-mail" Moje zapytanie wygląda następująco.Jak sortować SQL_Latin1_General_CP1_CI_AS przy użyciu operatora IN

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

Daje mi następujący błąd

nie można rozwiązać konflikt sortowania między "SQL_Latin1_General_CP1_CI_AS" i "Latin1_General_CI_AS" w równej pracy.

Mogę użyć sortowania, jeśli jest równy operator (=) zamiast IN. Ale użycie Collate daje mi błąd składni.

SELECT * FROM WHERE email #temp NOT IN (SELECT maila od Klienta) zestawianie SQL_Latin1_General_CP1_CI_AS

Jak mogę rozwiązać ten problem. Nie mogę upuścić i ponownie utworzyć tabel, ponieważ jest to db na żywo.

Dane w tabeli #temp jest z SQL Server 2000 i tabela Klient jest w SQL Server 2005

Dzięki.

Odpowiedz

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

Bit sortowania po prostu podąża za nazwą kolumny.

Albo ten (to zależy od tego, który z nich chcesz):

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

Wreszcie, jeśli DB jest SQL_Latin1_General_CP1_CI_AS, jedną z opcji jest użycie ...COLLATE Database_Default... zmusić do ustawień domyślnych.

Powiązane problemy