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。。。强制设置为默认设置