2010-01-05 22 views
7

我想篩選'電子郵件'記錄我的查詢是這樣的。如何整理SQL_Latin1_General_CP1_CI_AS使用IN運算符

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

它給了我下面的錯誤

無法解析的 等於操作規則 「SQL_Latin1_General_CP1_CI_AS」 和 「Latin1_General_CI_AS」 之間的排序規則衝突 。

如果存在相等的運算符(=)而不是IN,則可以使用collat​​e。但是在這裏使用Collat​​e會給我語法錯誤。

SELECT * FROM #TEMP WHERE電子郵件NOT IN (選擇的電子郵件客戶)整理 SQL_Latin1_General_CP1_CI_AS

我怎樣才能解決這個問題。我不能刪除並重新創建表,因爲它是實時數據庫。

數據在#temp表是從SQL Server 2000和客戶表是在SQL Server 2005

感謝。

回答

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

整理位跟在列名後面,基本上是。

還是這個(這取決於你想要哪一個):

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

最後,如果你的數據庫是SQL_Latin1_General_CP1_CI_AS,一個選擇是使用...COLLATE Database_Default...強迫到默認設置。