Sql server 如何将SQL拉丁语通用CP1 CI用作运算符

Sql server 如何将SQL拉丁语通用CP1 CI用作运算符,sql-server,sql-server-2005,tsql,Sql Server,Sql Server 2005,Tsql,我想过滤“电子邮件”上的记录我的查询是这样的 SELECT * FROM #temp WHERE email NOT IN (SELECT email FROM Customer) 它给了我以下的错误 无法解决排序规则冲突 在SQL\u拉丁1\u通用\u CP1\u CI\u AS之间 和拉丁语1_General_CI_一样 等于操作 如果存在相等运算符=而不是IN,则可以使用collate。但是在这里使用Collate会导致语法错误 从电子邮件不在的临时位置选择* 从客户整理中选择电子邮件

我想过滤“电子邮件”上的记录我的查询是这样的

SELECT * FROM #temp WHERE email NOT IN (SELECT email FROM Customer)
它给了我以下的错误

无法解决排序规则冲突 在SQL\u拉丁1\u通用\u CP1\u CI\u AS之间 和拉丁语1_General_CI_一样 等于操作

如果存在相等运算符=而不是IN,则可以使用collate。但是在这里使用Collate会导致语法错误

从电子邮件不在的临时位置选择* 从客户整理中选择电子邮件 SQL拉丁语通用CP1 CI AS

我怎样才能解决这个问题。我不能删除并重新创建表,因为它是live db

临时表中的数据来自SQL Server 2000,客户表位于SQL Server 2005中

谢谢

...
NOT IN (SELECT email COLLATE SQL_Latin1_General_CP1_CI_AS AS email FROM Customer)
collate位基本上跟在列名后面

或者这取决于你想要哪一个:

SELECT * FROM #temp WHERE email collate SQL_Latin1_General_CP1_CI_AS NOT IN (SELECT email FROM Customer) 
最后,如果您的数据库是SQL\u Latin1\u General\u CP1\u CI\u AS,那么一个选项是使用…COLLATE Database\u Default。。。强制设置为默认设置